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)?

Ответы на вопрос(5)

Ваш ответ на вопрос