2011-06-08 17 views
1

我要listList<String>。首先我顯示一個inputText,每次用戶在inputText中輸入數據時,我會添加另一個空的inputText。如果列表中已經有一些值,我將顯示它們全部+一個空的值。
但它不起作用,因爲字符串是不可變的
我做了一個包裝爲字符串作爲解決方法,但我不喜歡它。
我怎樣才能讓inputText參考支持列表中的位置?ice:如果String是不可變的,請重複輸入列表<String>的inputText?

<ice:repeat value="#{mBean.list}" var="xxx" valueChangeListener="{mBean.vcl}"> 
    <ice:inputText partialSubmit="true" value="#{xxx}" /> 
</ice:repeat> 

回答

2

我不做ICEfaces的,但如果<ice:repeat>支持varStatus屬性等作爲JSTL的<c:forEach>和Facelets' <ui:repeat>,則可以通過var通過列表索引訪問各個項目時,而不是提交給List<String>屬性如下面的facelet例如:

<ui:repeat value="#{bean.strings}" varStatus="loop"> 
    <h:inputText value="#{bean.strings[loop.index]}" /> 
</ui:repeat> 

這樣的值被列表的設置器,該List#set(index, value)方法設置。

除此之外,你最好的選擇就是把String包裝在bean中。然而,我非常肯定JSTL <c:forEach>也應該以上述方式爲您制定,只要您沒有將它嵌套在另一個JSF重複標籤中即可。您只會錯過<ice:repeat>中的valueChangeListener屬性/功能。

+0

它的工作原理,謝謝。對於新的空inputText,我將一個空字符串添加到列表中。 – 2011-06-08 21:24:26

+0

不客氣。只需'null'也是足夠的。 – BalusC 2011-06-08 21:24:39

+0

我回到了這個問題。如果你有一個Set而不是List,那麼你沒有一套索引。作爲解決方法,我將該集合轉換爲列表。 – 2011-07-05 09:17:59

相關問題