2016-06-12 94 views
-1

在註冊頁面上,我希望用戶只能選擇一個角色。所以我用<h:selectOneMenu如何使用自定義JSF轉換器將h:selectOneMenu項目轉換爲列表<String>?

<h:selectOneMenu id="roles" value="#{register.user.roles}" required="true"> 
    <f:selectItem itemValue="EMPLOYEE" itemLabel="EMPLOYEE" /> 
    <f:selectItem itemValue="MANAGER" itemLabel="MANAGER" /> 
    </h:selectOneMenu> 

<h:selectOneMenu回報String對象。但是,爲了堅持到數據庫我需要得到List<String>。下面是我轉換使用

@FacesConverter(value="aConverter") 
public class AConverter implements Converter { 

    @Override 
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) 
      throws ConverterException { 
     List<String> result = null; 
     result.add(arg1.toString()); 
     return result; 
    } 

    @Override 
    public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) 
      throws ConverterException { 
     return arg1.toString(); 
    } 

我應該如何轉換<h:selectOneMenu回報StringList? 我得到NullPointerException

+0

1:使用arg2,它是值,不是arg1,它是選擇組件。 2:'列表 result = null;'是空指針異常的原因。嘗試像'new ArrayList ()'而不是null。 –

+0

你是什麼意思的所有組合?如果你初始化一個列表爲null,然後在下一行添加它,你顯然會得到一個空指針異常。 –

回答

1

<h:selectOneMenu id="roles" value="#{register.user.roles}" required="true">
這裏你存儲在一個字符串的值。相反,在你的managedBean中創建一個變量作爲ArrayList,並在JSP頁面中使用它來保存selectOneMenu的值。我認爲它應該可以工作,而且你不需要轉換器。