如何使用自定义 JSF 转换器将 h:selectOneMenu 项转换为列表<String>?



在注册页面上,我希望用户只能选择一个角色。因此我使用<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退货String转换为List?我得到NullPointerException

<h:selectOneMenu id="roles" value="#{register.user.roles}" required="true">
在这里,您将值存储在字符串中。相反,在您的 managedBean 中创建一个变量作为 ArrayList,并在您的 JSP 页面中使用它来保存 selectOneMenu 的值。我认为它应该可以工作,你不需要转换器。

相关内容

最新更新