0

我正在与一个像这样的素面巫师打交道:

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 服务获得的,不能存储在地图属性中,因为我们正在使用其他缓冲策略......

到目前为止,我已经尝试像这样打印该文本(在不同的选项卡上):

<b>Vinculo: </b><h:outputText value="#{p:component('vinculos').getSelectedValue()}"/>

有任何想法吗?

谢谢!

4

1 回答 1

2

使用aMap<ItemId, Item>作为可用项目,以便您可以Item根据所选项目 ID 获得整个手头:

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

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}.
于 2013-05-16T11:21:53.030 回答