【发布时间】:2017-05-25 23:27:52
【问题描述】:
我有一个表单,里面有一个 p:commandButton;单击它时,将调用托管 bean 中的一个函数,该函数将数据收集到一个列表中。我需要在同一个 jsf 页面上以另一种形式在对话框中打印此列表。问题是,即使我在支持 bean 中的列表不为空,但在 jsf 页面上的表单中它为空。我究竟做错了什么?这些是表格:
<h:form>
<p:fieldset legend="Search for people" toggleable="true" toggleSpeed="500" style="width: 365px">
<p:panelGrid columns="2" >
<p:outputLabel for="confName" value="Name"/>
<p:inputText id="confName" value="#{controler.name}" />
...
</p:panelGrid>
<p:commandButton update="gstSrch" id="searchButton" value="Search" actionListener="#{controler.search}" />
</p:fieldset>
</h:form>
<h:form>
<p:repeat value="#{controler.people}" var="con" id="gstSrch" rendered="#{not empty controler.people}">
<p:panelGrid columns="4">
<h:outputText value="#{con.name}"/>
....
</p:panelGrid>
</p:repeat>
</h:form>
托管 bean 是 SessionScoped,并且在用于所有其他形式时也可以正常工作。 你会这么好心并指出我正确的方向吗?似乎它要么以某种方式重置,要么从未真正设置过。我试图将 Application Scoped 放到我的托管 bean 中,但结果是一样的。我也把所有这些都放在了一种形式中,结果还是一样的。 谢谢。
【问题讨论】:
-
把它放在一个表单中并更改按钮属性,如
update="@form" -
@Vasil Lukach 谢谢,解决了!
-
不使用一种表单很可能不是真正的问题。更新属性中的值很可能是错误的,但是您的问题描述不是那么好...另一个答案也一样好...所以请学习如何使用/在更新属性中添加什么。了解将 id 附加到子元素的命名容器,并学习如何在其他命名容器中添加元素......宝贵的知识!!!
标签: java primefaces jsf-2