如何根据存储的值生成多个文本框?

时间:2011-04-05 20:09:45

标签: jsf jsf-2 facelets

我需要根据辅助bean中的值创建许多输入框。如果产品允许5个用户,我需要5组输入字段。

加载页面时,输入框的数量已知。

有什么想法吗? 这个让我难倒了一段时间。

2 个答案:

答案 0 :(得分:3)

让bean根据数字准备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只是一个具有value属性的简单Javabean。

让视图使用<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>

答案 1 :(得分:0)

在简单的Jsf中很难做到。您可以基于Javascript库和Ajax编写自己的组件。 (ajax是可选的)或者如果您可以使用像IceFaces或Rich Faces这样的JSF变体,那么框架将为您完成大部分繁重工作。

例如,对于Icefaces,可以使用simple panel series实现。