Как мне сгенерировать количество текстовых полей в зависимости от сохраненного значения? - PullRequest
2 голосов
/ 06 апреля 2011

Мне нужно создать несколько полей ввода в зависимости от значения в компоненте поддержки.Если продукт позволяет 5 пользователей, мне нужно 5 наборов полей ввода.

Количество ящиков ввода известно при загрузке страницы.

Есть идеи?От этого я на некоторое время оступился.

Ответы [ 2 ]

3 голосов
/ 06 апреля 2011

Позвольте бобу подготовить List<Item> на основе числа.

@ManagedBean
@ViewScoped
public class Bean {

    private int count;
    private List<Item> items;

    public Bean() {
        count = 5;
        items = new ArrayList<Item>();

        for (int i = 0; i < count; i++) {
            items.add(new Item());
        }
    }

    public void submit() {
        System.out.println(items);
    }

    public List<Item> getItems() {
        return items;
    }

}

Где Item - это простой Javabean со свойством value.

Позвольте представлению перебрать его, используя <ui:repeat> или <h:dataTable>.

<h:form>
    <ui:repeat value="#{bean.items}" var="item">
        <h:inputText value="#{item.value}" /><br />
    </ui:repeat>

    <h:commandButton value="Submit" action="#{bean.submit}" />
</h:form>
0 голосов
/ 06 апреля 2011

Это было бы трудно сделать на простом JSF. Вы можете написать свой собственный компонент на основе библиотеки Javascript и Ajax. (ajax не обязателен), или если вы можете использовать такой вариант JSF, как IceFaces или Rich Faces, то фреймворк сделает большую часть тяжелой работы за вас.

Например, в случае Icefaces это может быть реализовано с использованием простой серии панелей .

...