如果要在jsf中使用enum
遵循如下方式
enum类
public enum Gender {
MALE("Male"),
FEMALE("Female");
private final String label;
private Gender(String label) {
this.label = label;
}
public String getLabel() {
return this.label;
}
}
在faces-config.xml中增加如下转换器
<converter>
<converter-for-class>java.lang.Enum</converter-for-class>
<converter-class>javax.faces.convert.EnumConverter</converter-class>
</converter>
在托管bean中使用如下get方法
public SelectItem[] getGenderValues() {
SelectItem[] items = new SelectItem[Gender.values().length];
int i = 0;
for(Gender g: Gender.values()) {
items[i++] = new SelectItem(g, g.getLabel());
}
return items;
}
绑定之
另外还有一种方式,需要实践试一试
<h:selectOneMenu id="gender" value="#{person.gender}">
<!-- use property name not method name -->
<f:selectItems value="#{genderBean.genderValues}" />
</h:selectOneMenu>
@ManagedBean
public class MyManagedBean {
public Gender[] getGenderValues() {
return Gender.values;
}
}
<h:selectOneMenu id="gender" value="#{person.gender}">
<f:selectItems value="#{myManagedBean.genderValues}" var="g"
itemValue="#{g}" itemLabel="#{g.label}"/>
</h:selectOneMenu>
原文地址http://stackoverflow.com/questions/2868778/jsf-2-0-use-enum-values-for-selectonemenu