【问题标题】:How can I get item label from selectOneMenu @ JSF page如何从 selectOneMenu @ JSF 页面获取项目标签
【发布时间】:2013-05-15 14:15:51
【问题描述】:

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

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()}"/>

有什么想法吗?

谢谢!

【问题讨论】:

  • 您已经为变量 idVinculo 保存了价值,所以只需从中检索。
  • 不,那是id,我需要文本值...
  • 哪个文本值?物品标签?
  • 没错,是itemLabel,不是itemValue

标签: jsf text primefaces label selectonemenu


【解决方案1】:

要么使用Map&lt;ItemId, Item&gt;作为可用物品,这样您就可以根据所选物品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

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}.

【讨论】:

  • 感谢您的回答!我无法在地图上保存所有可用项目,因为有很多很多 selectOneMenu 小部件,并且所有值都是从网络服务获得的(这些值可能在两个请求之间发生变化)
  • 为了避免转换器的痛苦,您可能会发现 OmniFaces SelectItemsConverter 很有帮助。 showcase.omnifaces.org/converters/SelectItemsConverter
  • 参考帖子,stackoverflow.com/questions/3141716/…,使用,列表 :可能有帮助!
猜你喜欢
  • 1970-01-01
  • 2011-10-10
  • 1970-01-01
  • 1970-01-01
  • 2013-04-21
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
  • 2010-11-02
相关资源
最近更新 更多