来自辅助bean的非空数据列表在jsf格式中为空

时间:2017-05-25 23:27:52

标签: java primefaces jsf-2

我有一个表单,里面有一个p:commandButton;单击它时,将调用托管bean中的函数,该函数将数据收集到列表中。我需要在同一个jsf页面上以另一种形式在对话框中打印此列表。问题是,即使我在支持bean中的列表不为空,在jsf页面上的表单时它也为null。我究竟做错了什么?这些是形式:

<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中,但结果是一样的。我也将这一切推到一个表格中,结果仍然相同。 谢谢。

2 个答案:

答案 0 :(得分:1)

为您的第二个表单分配一个ID,用它来更新您的组件

<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=":myForm:gstSrch" id="searchButton" value="Search" actionListener="#{controler.search}"  />
    </p:fieldset>
</h:form>
<h:form id="myForm">
    <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>

答案 1 :(得分:0)

所以,正如@Vasil Lukach所说,这对我来说是一份工作:

<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="@form" id="searchButton" value="Search" actionListener="#{controler.search}"  />
  </p:fieldset>

  <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>