2017-05-25 6 views
0

私の中にはp:commandButtonがあります。これをクリックすると、マネージドBeanの関数が呼び出され、データがリストに収集されます。このリストを同じjsfページの別のフォームのダイアログで印刷する必要があります。問題は、バッキングBeanの私のリストが空ではないにもかかわらず、jsfページのフォームにあるときはnullです。私は間違って何をしていますか?これらは次の形式です。空ではありませんbacking 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に配置しようとしましたが、結果は同じです。私もこのすべてを1つの形式でパットしますが、結果は同じです。 ありがとうございます。

+0

が1でそれを置きますフォームとボタンの属性を変更する 'update =" @ form "' –

+0

@Vasil Lukachありがとう、それを解決しました! – mimi

+0

1つのフォームを使用していないのは、実際の問題ではない可能性が最も高いです。更新属性の値が間違っている可能性は非常に高いですが、問題の説明はそれほど良いものではありませんでした...他の回答はちょうど良いものでした...だから、更新属性をどのように使うべきか/使用する方法を学んでください。子要素にIDを付加するnamingcontainersについて学び、他のnamingcontainersに要素を追加する方法を学ぶ...貴重な知識!!! – Kukeltje

答えて

1

@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=":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> 
+0

この回答にはもう少し説明を加えてください。なぜなら、これも有効な理由だから説明が足りないからです(他の答え/コメントにはこれがbtwにはありません)。 – Kukeltje

+0

[ここ](https://stackoverflow.com/) a/12150063/5527433)は、idsを使用して要素を更新する方法の良い説明です。 –

0

を更新するために、2番目のフォームに使用する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="@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>