Quelle est la fonction de @ce exactement?
Autant que je sache, le @ce est pour désigner l'élément qui déclenche l'événement, telles que :
<p:commandButton process="@this" ... />
Et en JSF 2 Ajax, le @ce peut aussi signifier l'encapsulation de composants, comme :
<h:inputText ...>
<f:ajax execute="@this" ... />
</h:inputText>
Et j'ai un cas où l'utilisation d' p:datatable, en incluant ou en excluant @ce peut avoir un impact différent sur Ajax partielle soumettre
Voici l'exemple, dans ce cas, le processus est à l'aide de @ce, et cela fonctionne comme prévu, où lorsque le processus qui se produit en premier, et ensuite par le setPropertyActionListener et le dernier, le action est exécutée :
<p:column>
<p:commandLink
value="#{anggaranDetail.map['code']}"
process="@this infoAnggaranForm:Anggaran"
update="detailDialogForm:Anggaran detailDialogForm:SubAnggaran"
oncomplete="infoAnggaranDialog.hide()"
image="ui-icon ui-icon-search"
action="#{tInputBean.updateAnggaranSubAnggaran}">
<f:setPropertyActionListener value="#{anggaranDetail}"
target="#{infoAnggaranBean.selectedAnggaranDetail}" />
</p:commandLink>
</p:column>
Mais quand j'ai omettre le @ce à partir de cet exemple, la setPropertyActionListener et la action ne sont jamais exécutées, comme si elles ne sont pas là.
Je me demande pourquoi ? Peut-être @ce a une autre signification autre que le composant en cours, peut-être l'enregistrement en cours dans cet exemple ?
Im en utilisant tomcat 7, et ce sont mes dépendances :
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.0.4-b09</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.0.4-b09</version>
<scope>compile</scope>
</dependency>
Vous devez vous connecter pour publier un commentaire.
La PrimeFaces
process
et standards JSFexecute
les attributs de point de spaceseparated composant identifiants des composants JSF doit traiter au cours de l'ensemble de JSF le cycle de vie d'une requête ajax (obtenir les paramètres de la demande, les valider, modèle de mise à jour, exécutez une action). Leprocess
par défaut@form
, la forme actuelle, et laexecute
par défaut@this
, le composant en cours. Dans les liens de la commande/boutons c'est obligatoire pour exécuter l'action associée avec le lien/bouton lui-même.Cependant, dans votre datatable vous avez
process="@this infoAnggaranForm:Anggaran"
, donc deux composantes du processus. Si vous omettez@this
mais gardez à l'autre composant, il sera seulement de processus/d'exécuter l'autre élément, et non le lien/bouton composant. Si vous omettez leprocess
attribut, il sera par défaut à@form
. Si vous avez plus d'autres intrants, les composants de la même forme, puis ils seront également traitées.Selon le béton à l'exigence fonctionnelle, vous pouvez simplement garder
process="@this infoAnggaranForm:Anggaran"
, ou de les omettre. JSF sera alors procédé/exécuter au moins une fois le bouton et l'autre élément, exactement comme vous le souhaitez.Voir aussi: