2011-08-16 20 views
2

faceface jsf 2.0をプライムフェイス3.0.M2コンポーネントライブラリで使用しています。 私は、データテーブル選択が発生したときに入力されるiputフィールドを含む動的な行数を達成しようとしています。uiの入力バインディング:jsfの繰り返し

入力フィールドでダイナミック行が正しく生成されたが、それに続く選択の後で動的行カウントは正しく変更されますが、入力フィールドは更新されず、最初の選択から入力が表示され続けます。

ここで私はfaceletのリストを反復する方法です。

<ui:repeat value="#{goalEntranceBean.selectedCard.parameterList}" var="prmBean" > 
     <li><h:outputText value="#{prmBean.lookUp.value}"/></li> 
     <li> 

      <h:outputText value="Weight:"/> 
      <p:inputText id="wx" required="true" value="#{prmBean.weight}"> 
      </p:inputText> 
      <h:outputText value="Percent:"/> 
      <p:inputText required="true" value="#{prmBean.percent}"> 
      </p:inputText> 
     </li> 

    </ui:repeat> 

my beanここで私はカードのリストを取得し、selectedCardをdatatableのrowSelectイベントで設定します。私がデバッグモードで確認されたときに

@ManagedBean(name = "goalEntranceBean") 
@ViewScoped 
public class GoalEntranceAction implements Serializable { 

private List<ScoreCard> personalCards = new ArrayList<ScoreCard>(); 

    private ScoreCard selectedCard = new ScoreCard(); 
...... 
} 

私は本当のリストを見ることができますが、画面内の要素は変更されません。

答えて

2

これは一般的な問題です(数日おきに尋ねられます)。長いストーリーを短くするために、ui:repeat内の入力は動作しません。

古くから有名なJSFには問題があります。多分それは修正されるでしょう。たぶん、誰も本当に気にしないようです(私は - インプットは?ui:repeat?そのような狂気のシナリオ!)。

クイックフィックスは、h:dataTableを使用することです。おそらくcssで悪用され、リストのように見えます。長い間の修正は、別のライブラリのイテレータを使用することです。 Primefacesには、順序付けられていないリストをレンダリングする要素があります。

1

解決方法は、入力をバッキングBeanにバインドし、バッキングBeanのコントロールの値をリスナーを介して(引数で受け取った新しい値を使用して)更新することです。明らかに、複雑なフォームを使用している場合は、ページ内の各コントロールのバッキングBeanにリスナー/コントロールを追加する必要があるので、これは良い解決策ではありませんが、1つまたは2つの入力があれば実用的です。

2

あなたの返信ありがとうございます。ソリューションを共有することを忘れて申し訳ありません。 私は上記のように私はprimefaces datatableを持っています。 行選択イベントでは、データテーブルをレンダリングし、そのデータテーブルのセルを更新したいとします。 p:inputtextを使用して簡単に問題を解決しました。今私は画面上のデータを変更することができ、私は画面上の更新操作後の値を見ることができます。私は理由を理解していませんが、それは動作します。

<p:dataTable var="orgPrmBean" 
       value="#{scoreCardOperationsBean.selectedCard.orgParameterList}" 
       emptyMessage="#{labels.norecord}" 
       rowKey="#{orgPrmBean.id}" 
      > 

     <p:columnGroup type="header"> 
      <p:row> 
       <p:column headerText="Parameters" colspan="3" style="text-align:left;width:480;"/> 
      </p:row> 
     </p:columnGroup> 


     <p:column style="text-align:left;width:200px;"> 
      <h:outputText value="#{orgPrmBean.info}"/> 
     </p:column> 

     <p:column style="text-align:left;width:180px;"> 
      <p:inputText value="#{orgPrmBean.weight}" 
         rendered="#{scoreCardOperationsBean.selectedCard.goalEdit}"> 
       <f:convertNumber maxFractionDigits="0"/> 
      </p:inputText> 

     </p:column> 

    </p:dataTable> 
関連する問題