Primefaces p:menuitem passer un des attributs de actionListener
Je voudrais faire passer certains attributs actionListener méthode.
Mon œuvre, c'est comme...
<c:forEach items="${customerProductsBean.userProductList}" var="userProduct">
<p:panel toggleable="#{true}" toggleSpeed="500" header="#{userProduct.product}" >
//Some Code... Data Table and Tree Table
<f:facet name="options">
<p:menu>
<p:menuitem value="ProductSetup" actionListener="#{customerProductsBean.getProductSetupData}" >
<f:attribute name="userIdParam" value="#{data.userId}"/>
<f:attribute name="geCustomerIdParam" value="#{data.geCustomerId}"/>
<f:attribute name="acpProductParam" value="#{data.acpProduct}"/>
</p:menuitem>
<p:menuitem value="Remove Product" url="#" onclick=""/>
</p:menu>
</f:facet>
</p:panel>
</c:forEach>
Et en Java Action Auditeur
public void getProductSetupData(ActionEvent actionEvent) {
try {
String userIdParam =
(String)actionEvent.getComponent().getAttributes().get("userIdParam");
String geCustomerIdParam =
(String)actionEvent.getComponent().getAttributes().get("geCustomerIdParam");
String acpProductParam =
(String)actionEvent.getComponent().getAttributes().get("acpProductParam");
} catch(Exception e) {
//Exception
}
}
Je l'ai essayé à l'aide de <f:attribute>
et <f:param>
mais n'a pas été en mesure d'obtenir la valeur en Java.
En java, Il montre la valeur null pour chaque valeur.
Vous devez vous connecter pour publier un commentaire.
Cela ne fonctionnera pas si
#{data}
fait référence à la variable d'itération d'une itération JSF composant comme<h:dataTable var>
. Le<f:attribute>
défini lors de la JSF vue de la construction, non pas au cours de vue JSF temps de rendu. Cependant, la<h:dataTable var>
n'est pas disponible pendant les temps de construction, il est disponible uniquement pendant les temps de rendu.Si votre environnement prend en charge EL 2.2, faire à la place
avec
Ou si votre environnement n'est pas, de faire à la place