Java 来自支持bean的非空数据列表在jsf格式中为空

Java 来自支持bean的非空数据列表在jsf格式中为空,java,primefaces,jsf-2,Java,Primefaces,Jsf 2,我有一个表单,里面有一个p:commandButton;单击它时,将调用托管bean中的一个函数,该函数将数据收集到一个列表中。我需要在同一jsf页面上以另一种形式在对话框中打印此列表。问题是,尽管我在backingbean中的列表不是空的,但在jsf页面上的表单中它是空的。我做错了什么?以下为表格: <h:form> <p:fieldset legend="Search for people" toggleable="true" toggleSpeed="500" s

我有一个表单,里面有一个p:commandButton;单击它时,将调用托管bean中的一个函数,该函数将数据收集到一个列表中。我需要在同一jsf页面上以另一种形式在对话框中打印此列表。问题是,尽管我在backingbean中的列表不是空的,但在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的,在所有其他形式中使用时,它都可以工作。 你能帮我指出正确的方向吗?看起来它要么以某种方式重置,要么从未实际设置。我试图将应用程序的作用域放在我的托管bean中,但结果是一样的。我也把所有这些放在一个表格里,结果还是一样的。
谢谢。

为第二个表单分配一个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>

...
....

为第二个表单分配一个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>

...
....

所以,正如@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>

...
....

所以,正如@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>

...
....

将它放在一个表单中,并更改按钮属性,如
更新=“@form”
@Vasil Lukach谢谢,解决了它!不使用一个表单很可能不是真正的问题。更新属性中的值很可能错误,但您的问题描述不太好。。。另一个答案也一样好。。。因此,请学习如何在更新属性中使用/放置什么。了解namingcontainers,它将id预先添加到子元素,并了解如何在其他namingcontainers中添加元素。。。宝贵的知识!!!将它放在一个表单中,并更改按钮属性,如
update=“@form”
@Vasil Lukach谢谢,解决了它!不使用一个表单很可能不是真正的问题。更新属性中的值很可能错误,但您的问题描述不太好。。。另一个答案也一样好。。。因此,请学习如何在更新属性中使用/放置什么。了解namingcontainers,它将id预先添加到子元素,并了解如何在其他namingcontainers中添加元素。。。宝贵的知识!!!请对此答案再加一点解释,因为这也是一个有效的答案,但没有解释为什么这样做(另一个答案/评论没有说明),这是一个关于如何使用ID更新元素的很好的解释。请对此答案再加一点解释,因为它也是有效的,但没有解释为什么这样做(另一个答案/评论没有这样做,顺便说一句)是关于如何使用ID更新元素的一个很好的解释。