p:旋转木马内的命令

时间:2013-02-01 21:43:33

标签: jsf primefaces

为什么以下工作:

<h:form id="form1">
<p:carousel id="carousel" value="#{galleriaBean.paths_tn}" var="img" itemStyle="width: 200px">
<p:graphicImage value="#{img}"/>
</p:carousel>

<p:commandLink id="here" value="click me" update="hello11" oncomplete="dlg.show()">
<f:setPropertyActionListener value="hello!!!" target="#{galleriaBean.selected}"/>
</p:commandLink>

<p:dialog widgetVar="dlg">
<h:outputText id="hello11" value="#{galleriaBean.selected}"/>
</p:dialog>
</h:form>

但是将commandLink移动到轮播中,它不起作用? setPropertyActionListener 甚至没有在bean中设置变量。

@RequestScoped CDI Bean。

<p:carousel id="carousel" value="#{galleriaBean.paths_tn}" var="img" itemStyle="width: 200px">
<p:graphicImage value="#{img}"/>
<p:commandLink id="here" value="click me" update=":form1:hello11" oncomplete="dlg.show()">
<f:setPropertyActionListener value="#{img}" target="#{galleriaBean.selected}"/>
</p:commandLink>
</p:carousel>

1 个答案:

答案 0 :(得分:2)

您没有显示代码的第二个版本(当您将p:commandLink放入p:carousel时),但我认为您在value p:commandLink属性中添加了一些支持bean的属性{1}}。您必须知道AJAX请求也是请求,因此您请求在每个AJAX请求中重新创建scoped bean。要保留用于f:setPropertyActionListener的属性状态,必须使bean至少以范围为视图,或以某种方式保留@PostConstructor方法中的状态。如果你可以使用视图范围的bean,那就应该这样做。