2013-04-01 95 views
0

我在將輸入值添加到ArrayList時存在一個簡單的問題。將多個輸入的值添加到陣列列表

我有這樣的POJO:

public class Person { 

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

然後支持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> 

當我嘗試addPerson的我得到這個錯誤:

summary=(Conversion Error setting value... 

我不明白爲什麼要將字符串轉換爲字符串?

+0

'Person'是一個複雜的類型,你需要一個轉換器。除此之外,您對將輸入文本綁定到arrayList有什麼期望? – kolossus

+1

是用於JSF 2還是JSF 1.2? –

+0

除了轉換器還有什麼快捷方式,因爲我需要它只是爲了將數值添加到arraylist中 –

回答

2

您無法將valueh:inputText改爲ArrayList(不含轉換器)。當您提交表單時(通過點擊按鈕)JSF嘗試撥打setFriends(String),這就是發生這種情況的地方。嘗試弄清楚你用這兩個h:inputText元素實現的目標。

+0

我正在嘗試將朋友名稱添加到arraylist中。這些輸入旨在用於添加到arraylist –

+0

第一部分,如果您的聲明在技術上不正確。這是轉換器背後的原因。 – skuntsel

+0

我建立了解決方案。感謝幫助 :) –

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