Resulta que cuando uno alimento un <f:selectItems> con un Map<Key, Value>, éste detecta automáticamente que se trata de este tipo de objetos por lo que no es necesario especificarle cuál es el key y cuál es el value:

<h:selectOneMenu value="#{bean.propEntera}">
<f:selectItems value="#{bean.propMapa}"/>
</h:selectOneMenu>

No obstante, el resultado del HTML será el opuesto a lo que podría esperarse pues el Value del Map
queda en el Value del Option (coincidencia de nombres aparte, el Value es el valor oculto en el Option),
y el Key del Map en el Label del Option (nuevamente, el Label es el visible y el Key debiera ser el oculto):

<select>
<option selected="selected" value="MapaValue1">MapaKey1</option>
<option value="MapaValue2">MapaKey2</option>
<option value="MapaValue3">MapaKey3</option>
</select>

Lo cual resulta contra-intuitivo, como lo hizo notar Balus C en el JIRA 1808 >>
El cual, sin embargo, se encuentra en estado NO FIX.
El mismo Balus C explica que es el Label el que tiene precedemcia de ser único >>
y aconsejo usar este truco si disponemos de E.L.2.2. >>

<h:selectOneMenu value="#{bean.integerProperty}">
<f:selectItems value="#{bean.mapProperty.entrySet()}" var="entry"
itemValue="#{entry.key}" itemLabel="#{entry.value}" />
</h:selectOneMenu>

A lo que voy -y que veo que va a ser otro post – es que estoy en JBoss 6 pero ésto no funciona,
al parecer porque mi web.xml no se conforma a la especificación Servlet 3.0 >>

Tarea: investigar y probar…

Este sitio utiliza cookies.    Leer más