JSF 2.0: verwende Enum-Werte für selectOneMenu [duplicate]

Diese Frage hat hier bereits eine Antwort:

Wie man Enum-Werte in f verwendet: selectItem (s) 4 Antworten

Ich verwende JSF 2.0 und möchte ein selectOneMenu mit den Werten meiner Enum füllen. Ein einfaches Beispiel:

// 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;
  }
}

Leider kann ich Seam nicht für mein aktuelles Projekt verwenden, das ein nettes @ hatt<s:convertEnum/> Tag, der die meiste Arbeit erledigt hat. Um in Seam die Werte der Enum zu verwenden, musste ich das folgende Markup schreiben (und eine Factory erstellen, die das @ liefe#{genderValues}:

<!-- the Seam way -->
<h:selectOneMenu id="persongender" value="#{person.gender}">
  <s:selectItems var="_gender" value="#{genderValues}"" label="#{_gender.label}"/>
  <s:convertEnum/>
</h:selectOneMenu>

Das Ergebnis ist, dass ich die Enum-Werte nicht mehr explizit im Markup deklarieren muss. Ich weiß, dass dies in JSF <2.0 nicht sehr einfach ist, aber gibt es in JSF2 neue Möglichkeiten, um bei diesem Problem zu helfen? Oder hilft Weld hier irgendwie? Wenn es in JSF2 nichts Neues gibt, wie geht das am einfachsten in JSF 1.2?

Oder kann ich sogar das Seam-JSF-Tag und die entsprechenden Seam-Klassen integrieren, um dieselbe Funktion in einer JavaEE6-App (ohne den Seam-Container) zu erhalten?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage