Primefaces commandButton action funktioniert nicht

Ich habe eine Primefaces-Projekt mit den folgenden xhtml-Datei:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">
  <h:body>
     <ui:composition>       
        <h:form>
            <p:dataTable id="parameters" var="parameter" value="#{devTestController.parameters}" 
                editable="true" editMode="cell" widgetVar="parameterTable" 
                selection="#{devTestController.selectedRow}" selectionMode="single"
                rowKey="#{parameter}">  

                <f:facet name="header">
                    Parameters
                </f:facet>

                <p:column headerText="Parameter Name" style="width:30%">  
                    <p:cellEditor>  
                        <f:facet name="output"><h:outputText value="#{parameter.label}" /></f:facet>  
                        <f:facet name="input"><p:inputText id="parameterNameInput" value="#{parameter.label}" style="width:96%"/></f:facet>  
                    </p:cellEditor>  
                </p:column>  

                <p:column headerText="Parameter Value" style="width:60%">  
                    <p:cellEditor>  
                        <f:facet name="output"><h:outputText value="#{parameter.value}" /></f:facet>  
                        <f:facet name="input"><p:inputText value="#{parameter.value}" style="width:96%" label="Parameter Value"/></f:facet>
                    </p:cellEditor>  
                </p:column>

                <p:column headerText="Action" style="width:10%">
                    <p:commandButton value="Button in table" action="#{devTestController.doAction()}"/>  
                </p:column>
            </p:dataTable>  
            <p:commandButton value="Button outside table" action="#{devTestController.doAction()}"/>
        </h:form>
        <p:commandButton value="Button outside form" action="#{devTestController.doAction()}"/>
      </ui:composition>     
   </h:body>
</html>

Hier habe ich 3 Befehlsschaltflächen (p:commandButton). Man ist in der dataTable (die Iteration Komponente), ist eine außerhalb der dataTable und einer ist außen h:form.
Überraschend, der nur einer arbeitet, ist das eine außerhalb des h:form (die letzten). Ich habe schon die Suche im internet für 5 Stunden und schon viele Dinge versucht. Ich verstehe nicht, warum dies geschieht. Ich habe viele Beiträge gelesen über ähnliche Probleme, aber keiner von Ihnen gelöst mein Fall. Ein ziemlich guter ist diese von BalusC. Ich habe gelesen, alle Fälle und ich kann nicht finden, eine Antwort. Zuerst habe ich vermutet, dass ich mehrere verschachtelte UIForm-Komponenten in jedem anderen (Fall 2) und ich suchte in der original-xhtml-Datei, enthält die oben, aber dies ist nicht der Fall. Ich habe keine andere h:form-tags in meinem code, außer diesem einen. Nach allem, wenn ich vollständig zu entfernen, das h:form-tag, dann keine Befehlsschaltfläche funktioniert und ich bekomme auch die "Die form-Komponente muss eine UIForm in seiner Abstammung. Vorschlag: schliessen Sie die erforderlichen Komponenten in h:form" Warnung. Was könnte hier schief gehen?

Schreibe einen Kommentar