Primefaces commandButton action ne fonctionne pas
J'ai un Primefaces projet avec les actions suivantes fichier xhtml:
<!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>
Ici j'ai 3 boutons de commande (p:commandButton). L'un est à l'intérieur de la dataTable (itération composant), on est à l'extérieur de la dataTable et on est en dehors de h:formulaire.
Étonnamment, le seul travail est à l'extérieur de l'h:forme (la dernière). J'ai été chercher sur internet pour 5 heures et déjà essayé beaucoup de choses. Je ne comprends pas pourquoi ce qui se passe. J'ai lu beaucoup de messages concernant des problèmes similaires, mais aucun n'a résolu mon cas. Un assez bon est cette par BalusC. J'ai lu tous les cas et je ne peux pas trouver une réponse. J'ai d'abord soupçonné que j'ai imbriqué plusieurs UIForm composants les uns des autres (cas 2) et j'ai cherché dans l'original fichier xhtml qui comprend l'un au-dessus, mais ce n'est pas le cas. Je n'ai pas d'autres h:balises de formulaire dans mon code à l'exception de celui-ci. Après tout, si je supprimer complètement le h:balise de formulaire, puis pas de bouton de commande fonctionne et je reçois aussi les "Le composant formulaire doit avoir un UIForm dans son ascendance. Suggestion: inclure les composants nécessaires au sein de h:formulaire" avertissement. Ce qui pourrait aller mal ici?
Vous devez vous connecter pour publier un commentaire.
Comme @Omar points, vous avez oublié que la balise de fermeture, même moi, je suppose que c'est une erreur de frappe lors de l'affichage de la question. Appart ça, j'ai testé par moi-même et il fonctionne pour moi (Primefaces 3.5, Mojarra JSF 2.1.26). J'ai fait ce SSCCE, qui est pleinement fonctionnelle (boutons à l'intérieur de travail de la forme, pas à l'extérieur).
ui:composition
ici à tous. En outre, il rend votre primefaces tableau n'est pas correctement coiffés.Il semble qu'il vous manque une balise de fermeture pour
<ui:composition>
.