Как я могу получить метку элемента со страницы selectOneMenu @ JSF

Я имею дело с волшебником в простых лицах, как этот:

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>

Все значения получены из веб-сервиса и не могут быть сохранены в атрибуте карты, потому что мы используем другие стратегии буферизации...

До сих пор я пытался напечатать этот текст (на другой вкладке) следующим образом:

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

Есть идеи?

Спасибо!


person Sebastián    schedule 15.05.2013    source источник
comment
Вы уже сохраняете значение в свою переменную idVinculo, поэтому просто извлеките его.   -  person Makky    schedule 15.05.2013
comment
Нет, это идентификатор, мне нужно текстовое значение...   -  person Sebastián    schedule 15.05.2013
comment
Какое текстовое значение? Метка элемента ?   -  person Makky    schedule 15.05.2013
comment
Правильно, itemLabel, а не itemValue.   -  person Sebastián    schedule 15.05.2013


Ответы (1)


Либо используйте Map<ItemId, Item> в качестве доступных элементов, чтобы вы могли получить все 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 под рукой:

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}.
person BalusC    schedule 16.05.2013
comment
Спасибо за ответ! Я не могу хранить все доступные элементы на карте, так как есть много-много виджетов selectOneMenu, и все значения получены из веб-службы (эти значения могут меняться между двумя запросами). - person Sebastián; 17.05.2013
comment
Чтобы избавить себя от проблем с конвертером, вам может пригодиться OmniFaces SelectItemsConverter. showcase.omnifaces.org/converters/SelectItemsConverter - person BalusC; 17.05.2013
comment
Обратитесь к сообщению, stackoverflow.com/questions/3141716/, используя List ‹SelectItem›: может помочь! - person AVA; 19.04.2014