【发布时间】:2016-10-12 17:13:53
【问题描述】:
在注册页面上,我希望用户只能选择一个角色。因此我使用<h:selectOneMenu
<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 return String 转换为 List ?
我得到NullPointerException
【问题讨论】:
-
1:使用arg2,它是值,而不是arg1,它是选择组件。 2:
List<String> result = null;是空指针异常的原因。尝试类似new ArrayList<String>()而不是 null。 -
所有组合是什么意思?如果你将一个列表初始化为 null 然后在下一行添加到它,你显然会得到一个空指针异常。