Primefaces p:menuitem pass ein Attribute actionListener
Möchte ich einige Attribute, um actionListener-Methode.
Meine Umsetzung ist wie...
<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>
Und in Java Action-Listener
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
}
}
Versuchte ich es mit <f:attribute>
und <f:param>
aber war nicht in der Lage, um den Wert in Java.
In java zeigt null für jeden Wert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das wird nicht funktionieren, wenn
#{data}
bezieht sich auf die iterierende variable einer Iteration JSF-Komponente, wie<h:dataTable var>
. Die<f:attribute>
wird bei der JSF-view build-Zeit, nicht während der JSF-view-render-Zeit. Jedoch, die<h:dataTable var>
ist nicht verfügbar, während anzeigen, erstellen, es ist nur verfügbar, während der view-render-Zeit.Wenn in Ihrer Umgebung unterstützt, EL 2.2, stattdessen tun
mit
Oder wenn Ihre Umgebung nicht, stattdessen tun