2013-09-28 46 views
1

我有一個字段叫numberOfGuests,它取一個整數值。當我提交該頁面時,我想要動態地在下一頁插入儘可能多的p:inputText字段作爲numberOfGuests值。 ui:repeat只允許我迭代集合。我想知道我該怎麼做。如何動態插入primefaces輸入文本?

謝謝。

回答

4

只需創建一個尺寸爲numberOfGuests的集合(或更容易一個數組)。

E.g.在視圖中範圍的bean:

private Integer numberOfGuests; // +getter+setter 
private String[] guests; // +getter 

public void submit() { 
    guests = new String[numberOfGuests]; 
} 

<h:form> 
    <p:inputText value="#{bean.numberOfGuests}" /> 
    <p:commandButton value="submit" action="#{bean.submit}" update=":guests" /> 
</h:form> 

<h:panelGroup id="guests"> 
    <h:form rendered="#{not empty bean.guests}"> 
     <ui:repeat value="#{bean.guests}" varStatus="loop"> 
      <p:inputText value="#{bean.guests[loop.index]}" /> 
     </ui:repeat> 
     <p:commandButton value="save" action="#{bean.save}" /> 
    </h:form> 
</h:panelGroup> 

結果只是顯示在相同的視圖,其保持視圖範圍的bean實例活着和輸入字段由索引參照的值,而不是在本例中爲varString是不可變的。如果它是一個像Guest這樣的複雜對象,那麼只需要像「value="#{guest.name}"」這樣的「常用」方式綁定它們。

+0

在客人= new String [numberOfGuests];'numberOfGuests總是爲我返回1。所以我的數組大小總是1.任何想法爲什麼這可能是?我在另一個類中創建數組'guests'並通過一個對象訪問另一個類的'numberOfGuests'。 – Rajath

+0

我懷疑這是因爲我正在創建'Bill'類的新對象,它具有'numberOfGuests',在我的其他類'TailorTip'中並使用'bill.getNumberOfGuests()'訪問它。它採用了'numberOfGuests'的默認值,即1。 – Rajath

+0

我不確定我是否做錯了或者沒有,但是示例代碼不適用於我,直到我添加了在p:inputText裏面。我正在使用PF 6.0,所以可能有所改變? 無論如何只是爲了讓人們知道這個例子不適合你。 –