Я использую JSF 2.0 и хочу заполнить selectOneMenu значениями моего Enum. Простого пример: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;
}
}
К сожалению, я не могу использовать Шов для моего текущего проекта, который имел хороший <s:convertEnum/>
тега, который сделал большую часть работы. В пластах, чтобы использовать значения 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 в g et те же функции в JavaEE6-приложении (без контейнера Seam)?
Смотрите также [Как использовать перечисление в selectOneMenu] (http://stackoverflow.com/q/8229638) и [Как используйте перечисление в selectManyMenu] (http://stackoverflow.com/q/3822058) – BalusC