JSF-2 f: selectItems with Map zeigt itemLabel nicht an

Wenn ich f: selectItems verwende, um Elemente in einer Karte anzuzeigen, kann ich nicht den Wert des Kartenelements anzeigen, sondern nur den Schlüssel. f: selectItems verwendet das itemLabel überhaupt nicht. Wenn ich stattdessen eine Liste verwende, funktionieren die Dinge.

Im Folgenden wird das itemLabel verwendet, um die "Beschreibung" eines Elements in einer Liste anzuzeigen:

<h:selectOneMenu>
  <f:selectItems value="#{testBB.testList}" var="s"
    itemLabel="TEST #{s.description}" itemValue="#{TEST s.name}" />
</h:
selectOneMenu>

Der folgende Versuch, den Wert eines Elements in einer Karte anzuzeigen, funktioniert nicht. Es zeigt den Schlüssel des Elements an, verwendet jedoch nicht das itemLabel-Attribut, was an der fehlenden Ausgabe des "TEST" -Texts zu erkennen ist.

<rich:select>
  <f:selectItems value="#{testBB.testMap}" var="s"
    itemLabel="TEST #{s.value}" itemValue="TEST #{s.key}" />
</rich:select>

Die einfache Backbohne sieht folgendermaßen aus:

public class TestBB {
  private Map<String, String> testMap;
  private List<TestItem> testList;

  public TestBB() {
    testMap = new HashMap<String, String>();
    testMap.put("1_key", "Item One");
    testMap.put("2_key", "Item Two");
    testMap.put("3_key", "Item Three");

    testList = new ArrayList<TestItem>();
    testList.add( new TestItem("name_1", "description_1") );
    testList.add( new TestItem("name_2", "description_2") );
    testList.add( new TestItem("name_3", "description_3") );
  }

  public Map<String, String> getTestMap() {
    return testMap;
  }

  public List<TestItem> getTestList() {
    return testList;
  }

}

Also, irgendwelche Ideen, wie man diese Arbeit macht, das heißt, wie man effektiv eine Map mit selectItems benutzt?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage