我正在使用JSF 2.0,并希望用我的Enum的值填充selectOneMenu.一个简单的例子:
// Sample 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;
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不能将Seam用于我当前的项目,该项目有一个很好的<s:convertEnum/>标签可以完成大部分工作.在Seam中,要使用Enum的值,我必须编写以下标记(并创建一个提供以下内容的工厂#{genderValues}:
<!-- the Seam way -->
<h:selectOneMenu id="persongender" value="#{person.gender}">
<s:selectItems var="_gender" value="#{genderValues}"" label="#{_gender.label}"/>
<s:convertEnum/>
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
结果是我不必在标记内明确声明枚举值.我知道在JSF <2.0中这不是很容易,但JSF2中是否有任何新的东西来帮助解决这个问题?或者Weld在某种程度上帮助了吗?如果JSF2中没有新内容,那么在JSF 1.2中最简单的方法是什么?
或者我甚至可以集成Seam JSF标记和相应的Seam类来在JavaEE6-App中获得相同的功能(没有Seam容器)?