2012-05-05 20 views
3

primefacesデータテーブルでinputText要素を使用する方法について質問があります。Primefaces動的フォームを作成するDatatableとInputText要素

XHTMLが以下

<h:form > 
       <h:panelGrid columns="2"> 
        <p:commandButton action="#{offerController.addNewOfferRow}" update="panel1" id="iconOnly1" 
      icon="ui-icon-circle-plus" value="Yeni Satır" title="Icon Add" style="width:220px;" /> 


       </h:panelGrid> 
       <p:dataTable id="panel1" var="offer" value="#{offerController.offerIds}" style="align: center;"> 
        <p:column id="modelHeader" style=" margin-left: auto; margin-right: auto; width:70%;" > 
         <f:facet name="header"> 
          Eklenecek Offerlar 
         </f:facet> 

         <p:inputText id="addOfferId" value="#{offer}" style=" margin-left: auto; margin-right: auto; width:70%;" /> 

        </p:column> 


       </p:dataTable> 

のようなもので、私のJava Beanは、以下のようなものです:

@ManagedBean 
@ViewScoped 


public class OfferController implements Serializable{ 

    /** 
    * 
    */ 

    private static final long serialVersionUID = -1552493989687233258L; 
    private static final int defaultNumberOfRows = 6; 
    private List<String> offerIds = new LinkedList<String>(); 


    public OfferController() { 
     super(); 
    for(int i=0;i<defaultNumberOfRows;i++){ 
     offerIds.add(""); 
     } 

    } 

    public void addOffers(){ 
     // do some op. 
    } 

    public void addNewOfferRow(){ 
     offerIds.add(""); 
    } 

    public getOfferIds(){ 
     return offerIds; 
    } 

    public setOfferIds(List<String> offerIds){ 
      this.offerIds = offerIds; 
    } 


} 

のinputTextの文字列項目のリストを表示したいabove.Iコードを使用してデータ可能な要素。

addNewOfferRow操作Listに新しい要素を追加すると、datatableがクライアント側で更新されます。

フォームを送信した後、すべてのinputText要素には、ユーザーが入力した値は格納されません。

どのようにこれらのdatatable end inputText要素を使用して動的行フォームを作成できますか。

ありがとうございました。

+0

送信時にBeanが再作成されるかどうか確認しましたか?コンストラクタ内にブレークポイントを設定して検証します。 –

答えて

0

inputText要素でリスト項目の値を設定できない文字列(不変型)のリストを使用しています。

リスト項目として文字列を含むラッパークラスを使用します。

<p:dataTable var="item" value="#{listBean.list}"> 
    <p:column> 
     <p:inputText value="#{item.name}" /> 
    </p:column> 
</p:dataTable> 
関連する問題