2012-05-05 3 views
3

У меня вопрос об использовании элемента inputText в datatable.Основные элементы 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; 
    } 


} 

При использовании кодов above.I хотите, чтобы отобразить список строковых элементов в inputText элементы, которые находятся в datatable.

Операция addNewOfferRow добавляет новый элемент в список и обновляется datatable с клиентской стороны.

Однако после отправки формы все элементы inputText не сохраняют значения, введенные пользователем.

Как я могу использовать этот элемент endText ввода данных для создания формы динамических строк.

Спасибо.

+0

Вы проверяли, воссоздан ли ваш bean-компонент при подаче? Установите контрольную точку внутри конструктора, чтобы проверить ее. –

ответ

0

Вы используете список строк (неизменяемый тип), который не позволяет элементу inputText устанавливать значение в элементе списка.

Используйте класс-оболочку, содержащий строку в качестве элементов списка.

<p:dataTable var="item" value="#{listBean.list}"> 
    <p:column> 
     <p:inputText value="#{item.name}" /> 
    </p:column> 
</p:dataTable> 
Смежные вопросы