我正在处理像这样的素数面向导:
http://www.primefaces.org/showcase/ui/wizard.jsf
我想从selectOneMenu(来自其中一个标签)获取原始文本并在确认标签中显示。
我的selectOneMenu看起来像这样:
<p:selectOneMenu id="vinculos"
value="#{socioAdicional.idVinculo}" required="true"
label="Vinculo">
<f:selectItem itemLabel="#{mensajes.combos_empty_txt}" itemValue="#{null}" />
<f:selectItems value="#{controladorCombos.vinculos}"
var="vinculo" itemLabel="#{vinculo.descripcion}"
itemValue="#{vinculo.id}" />
</p:selectOneMenu>
所有值都是从Web服务获取的,不能存储在map属性中,因为我们正在使用其他缓冲策略...
到目前为止,我已尝试打印该文本(在不同的标签上),如下所示:
<b>Vinculo: </b><h:outputText value="#{p:component('vinculos').getSelectedValue()}"/>
有什么想法吗?
谢谢!
答案 0 :(得分:2)
使用Map<ItemId, Item>
作为可用项目,这样您就可以根据所选的项目ID获得整个Item
:
private Long selectedItemId;
private Map<Long, Item> availableItems;
<h:selectOneMenu value="#{bean.selectedItemId}">
<f:selectItems value="#{bean.availableItems.values()}" var="item"
itemValue="#{item.id}" itemLabel="#{item.description}" />
</h:selectOneMenu>
...
<b>Selected item:</b> #{bean.availableItems[bean.selectedItemId].description}.
或使用整个Item
代替Id
作为选定项目,使用转换器,这样您就可以立即掌握整个Item
:< / p>
private Item selectedItem;
private List<Item> availableItems;
<h:selectOneMenu value="#{bean.selectedItem}" converter="itemConverter">
<f:selectItems value="#{bean.availableItems}" var="item"
itemValue="#{item}" itemLabel="#{item.description}" />
</h:selectOneMenu>
...
<b>Selected item:</b> #{bean.selectedItem.description}.