我希望用户为JSF的inputText组件输入一个或多个名称。
所以我在想这样的托管bean:

public class MyBean {

    private String[] names;

    public String[] getNames() {
        return names;
    }

    public void setNames(String[] names) {
        this.names = names;
    }
}


但是,如何将JSF的inputText组件映射到此array属性?

最佳答案

首先,您需要将数组保留在bean的(后)构造函数中。例如。

public MyBean() {
    names = new String[3];
}


然后,您可以通过硬编码索引访问它们

<h:inputText value="#{myBean.names[0]}" />
<h:inputText value="#{myBean.names[1]}" />
<h:inputText value="#{myBean.names[2]}" />


或将<ui:repeat>varStatus一起使用以通过动态索引访问它们

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


不要使用var属性,例如

<ui:repeat value="#{myBean.names}" var="name">
    <h:inputText value="#{name}" />
</ui:repeat>


当您提交表单时,它将不起作用,因为String没有值的设置方法(getter基本上是toString()方法)。

关于jsf - 如何将多个inputText映射到数组属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6741573/

10-11 03:02