我将selectOneMenu值绑定到字符串列表并将转换器转换为将字符串值转换为列表并将列表转换为字符串但由于未选择此值而导致出现默认值问题。
JSF代码: -
<h:selectOneMenu
value="#{property.values}">
<f:selectItem itemValue="" itemLabel="#{tags.select_one}"></f:selectItem>
<f:selectItems value="#{property.enums}"></f:selectItems>
<f:converter converterId="listConverter" />
</h:selectOneMenu>
转换器代码: -
public class ListConverter implements Converter {
@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
if (arg2 == null)
return null;
List<String> list = new ArrayList<String>();
list.add(arg2);
return list;
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
if (arg2 instanceof List)
if (!((List<String>) arg2).isEmpty())
return ((List<String>) arg2).get(0);
else
return null;
return (String) arg2;
}
}
当列表中有值时,所选值仍然是select_one的第一个项目。