我在使用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;
}
}
非常遗憾,我无法在当前项目中使用 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>
结果是我不再需要在标记内显式地声明枚举值。
我知道在JSF<2.0中这并不容易,但JSF2中是否有任何新的方法来解决这个问题?或者Weld在这方面是否有所帮助?
如果JSF2中没有任何新功能,那么在JSF 1.2中最简单的方法是什么?
或者,我甚至可以集成Seam JSF标签和Seam的相应类,以在JavaEE6-App中获得相同的功能(无需Seam容器)?