3

我有一个关于在 primefaces 数据表中使用 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 元素中显示字符串项列表。

并且 addNewOfferRow 操作将新元素添加到 List 并且数据表被更新客户端。

但是,在提交表单后,所有 inputText 元素都不会存储用户输入的值。

我如何使用这些数据表结束 inputText 元素来创建动态行表单。

谢谢。

4

1 回答 1

0

您使用的字符串列表(不可变类型)不允许 inputText 元素设置列表项的值。

使用包含 String 作为列表项的包装类。

<p:dataTable var="item" value="#{listBean.list}">
     <p:column>
         <p:inputText value="#{item.name}" />
     </p:column>
</p:dataTable>
于 2012-08-22T10:01:20.120 回答