我正在尝试将参数传递给ajax事件,这是我的意思的一个例子:
<h:panelGrid id="pictures" columns="3">
<c:forEach items="#{createProduct.pictures}" var="picture">
<h:graphicImage value="#{picture.source}" />
<h:inputText value="#{picture.alt}" />
<p:commandButton value="Remove">
<f:ajax execute="@form"
listener="#{createProduct.removePicture(picture)}"
render="@form" />
</p:commandButton>
</c:forEach>
</h:panelGrid>
我知道这段代码不起作用,因为你无法通过ajax监听器传递参数。虽然这只是我想要完成的一个例子。我已尝试将<f:param id="picture" value="#{picture}" />
allong与ajax标记一起使用,但这会导致重复的组件ID形式:picture,因为它处于循环中。
我需要在方法中使用此参数以确定要删除的图片。
我怎样才能用ajax解决这个问题?
我正在使用@ViewScoped CDI-bean。
答案 0 :(得分:3)
首先,我建议将c:forEach
替换为ui:repeat
代码。其次,当你使用Primefaces时,你应该尽力使用它。因此,commandButton
可以更容易编写:
<p:commandButton value="Remove" process="@form" update="@form" action="#{createProduct.removePicture(picture)}"/>
就是这样。不要复杂。
顺便说一下,primefaces commandButton
默认发送AJAX请求,你不需要(你不能使用)f:ajax
标签。