ice: повторить inputText со списком <String>, если строка неизменна? - PullRequest
1 голос
/ 09 июня 2011

Я хочу, чтобы list было List<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 Ответ

2 голосов
/ 09 июня 2011

Я не делаю IceFaces, но если <ice:repeat> поддерживает атрибут varStatus, такой как JSTL's <c:forEach> и Facelets '<ui:repeat>, то вы можете отправить в List<String> при доступе к отдельному элементу с помощьюиндекс списка вместо атрибута var в следующем примере Facelet:

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

Таким образом, значение устанавливается установщиком списка, методом List#set(index, value).

Кроме этого, ваш лучший выбор - обернуть строку в боб.Однако я весьма уверен, что JSTL <c:forEach> также должен работать для вас вышеуказанным способом, если вы не вложили его в другой повторяющийся тег JSF.Вы пропустите только тот атрибут / функцию valueChangeListener, который был у вас в <ice:repeat>.

...