JSF 2.0: используйте значения Enum для selectOneMenu [duplicate]
На этот вопрос уже есть ответ:
Как использовать перечисляемые значения в f: selectItem (s) 4 ответаЯ использую JSF 2.0 и хочу заполнить selectOneMenu значениями моего Enum. Простой пример:
// 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>
В результате мне больше не нужно явно объявлять значения Enum внутри разметки. Я знаю, что это не очень легко в JSF <2.0, но есть ли что-то новое в JSF2, чтобы помочь с этой проблемой? Или здесь как-то помогает Weld? Если в JSF2 нет ничего нового, как проще всего это сделать в JSF 1.2?
Или я могу даже интегрировать тег JSF Seam и соответствующие классы Seam, чтобы получить ту же функцию в JavaEE6-App (без контейнера Seam)?