ice:如果String是不可变的,则用List <string>重复inputText?</string>

时间:2011-06-08 20:05:37

标签: jsf immutability icefaces textinput repeat

我希望listList<String>。首先,我显示一个inputText,每次用户在inputText中输入数据时,我都会添加另一个空inputText。如果列表已经有一些值,我会显示全部+一个空值。
但它不起作用,因为字符串是不可变的
我为String做了一个包装器作为一种解决方法,但我不喜欢它。
如何让inputText引用支持列表中的位置?

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

1 个答案:

答案 0 :(得分:2)

我没有使用IceFaces,但如果<ice:repeat>支持varStatus属性,如JSTL的<c:forEach>和Facelets'<ui:repeat>,那么您可以提交给{ {1}}按列表索引而不是List<String>属性访问单个项目时,作为以下Facelet示例:

var

这样,该值由列表的setter设置,List#set(index, value)方法。

除此之外,最好的办法是将String包装在bean中。然而,我很肯定JSTL <ui:repeat value="#{bean.strings}" varStatus="loop"> <h:inputText value="#{bean.strings[loop.index]}" /> </ui:repeat> 也应该以上述方式为你工作,只要你没有将它嵌套在另一个JSF重复标签中。您只会错过<c:forEach>中的valueChangeListener属性/功能。