将多个输入中的值添加到arraylist

时间:2013-04-01 20:34:14

标签: jsf jsf-2

我在将输入值添加到ArrayList时遇到了一个简单的问题。

我有一个像这样的POJO:

public class Person {

    private String firstName;
    private String lastName;
    private List<String> friends=new ArrayList<>();
    //getters and setters

然后Backing bean:

  public class backingBean{
          Person p=new Person();

          public void addPerson(){

             for(String friend:p.getFriends)
                System.out.println(friend);
           }


}

和视图

        <h:form>
            <fieldset>
                <h:panelGrid columns="2">

                    <h:outputText value="Name" />
                    <h:inputText value="{backingBean.person.firstName}"/>              

                    <h:outputText value="LastName" />
                    <h:inputText value="#{backingBean.person.lastName}"/>


                    <h:outputText value="Friends" />
                    <h:inputText value="#{backingBean.person.friends}" />
                    <h:inputText value="#{backingBean.person.friends}" />

                </h:panelGrid>
                <h:commandButton  value="Add"
                    action="#{backingBean.addPerson}" />

            </fieldset>
        </h:form>

当我尝试添加角色时,我收到此错误:

summary=(Conversion Error setting value...

我不明白为什么将String转换为String?

2 个答案:

答案 0 :(得分:2)

您无法将value的{​​{1}}绑定到h:inputText(无转换器)。当您提交表单(通过单击按钮)时,JSF会尝试调用ArrayList,这就是setFriends(String)发生的位置。尝试使用这两个Exception元素找出您要实现的目标。

答案 1 :(得分:0)

如果你想添加2个朋友,只需在辅助bean中创建2个不同的变量:

private String friend1;
private String friend2;

然后将它们添加到addPerson中,如下所示:

    List<String> friends=new ArrayList<String>();
    friends.add(friend1);
    friends.add(friend2);

    p.setFriends(friends);

未经测试可能存在一些错误。

编辑:

如果这不满足你,你可以看看这个@BalusC ANSWER