I want list to be List<String>. First I display one inputText, each time a user enters data in the inputText I add another empty inputText. If the list already has some values I display them all + one empty one.
But it doesn’t work, because Strings are immutable.
I made a wrapper for String as an workaround, but I don’t like it.
How could I make the inputText refer to the position in the backed list ?
<ice:repeat value="#{mBean.list}" var="xxx" valueChangeListener="{mBean.vcl}">
<ice:inputText partialSubmit="true" value="#{xxx}" />
</ice:repeat>
I don’t do IceFaces, but if the
<ice:repeat>supports avarStatusattribute like as JSTL’s<c:forEach>and Facelets’<ui:repeat>, then you can submit to aList<String>when accessing the individual item by list index instead of byvarattribute as the following Facelet example:This way the value is set by the setter of the list, the
List#set(index, value)method.Other than that, your best bet is really to wrap the String in a bean. I’m however pretty positive that JSTL
<c:forEach>should also work out for you the above way, as long as you don’t have it nested in another JSF repeating tag. You’ll only miss thatvalueChangeListenerattribute/feature you had in<ice:repeat>.