如何使用自定义 JSF 转换器将 h:selectOneMenu 项目转换为 List<String>?
How to convert h:selectOneMenu item to a List<String> with custom JSF converter?
在注册页面上,我希望用户能够 select 只有一个角色。因此我使用 <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
returns 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
<h:selectOneMenu id="roles" value="#{register.user.roles}" required="true">
在这里,您将值存储在一个字符串中。相反,在您的 managedBean 中创建一个变量作为 ArrayList,并在您的 JSP 页面中使用它来保存 selectOneMenu 的值。我认为它应该可以工作,你不需要转换器。
在注册页面上,我希望用户能够 select 只有一个角色。因此我使用 <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
returns 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
<h:selectOneMenu id="roles" value="#{register.user.roles}" required="true">
在这里,您将值存储在一个字符串中。相反,在您的 managedBean 中创建一个变量作为 ArrayList,并在您的 JSP 页面中使用它来保存 selectOneMenu 的值。我认为它应该可以工作,你不需要转换器。