【问题标题】:Can the value property be used to reference a particular value of a map? [duplicate]value 属性可以用来引用地图的特定值吗? [复制]
【发布时间】:2014-12-20 18:14:23
【问题描述】:

我的 bean 有一个整数到字符串的映射,我试图有一个菜单来选择映射中某个键引用的值。

我的 bean 看起来像这样:

public class Bean {
    Map<Integer, String> map;
    //...
}

我的 xhtml 文件的相关部分如下所示:

<h:outputLabel value="Selection for code 5" for="code5menu" />
<h:selectOneMenu id="code5menu" value="#{bean.map.get(5)}">
    <f:selectItem itemValue="good" itemLabel="good" />
    <f:selectItem itemValue="bad" itemLabel="bad" />
</h:selectOneMenu>

有没有办法做到这一点或类似的事情?

如果需要,我可以更改一些 bean。需要注意的一件事是整数不是连续的,因此制作列表会有很多空白空间,但如果这是我仍然可以尝试使用列表的唯一方法(尽管整数键不是索引) .也许有办法用ajax做到这一点?我查看了 EL 函数,但这似乎不是我需要的。

【问题讨论】:

  • 你的预期输出是什么??
  • @VighaneshGursale,我希望这个例子更清楚一点。这能把事情弄清楚吗?谢谢。

标签: jsf


【解决方案1】:

您应该使用Map&lt;Long, String&gt; 而不是Map&lt;Integer, String&gt;,因为 EL 将文字数字 0 解释为 long 类型并且无法访问。您可以找到所有额外的详细信息here

要使用 EL 键访问 Map 元素,请使用:

#{bean.map[your-key]}

【讨论】:

  • 谢谢!在我的特殊情况下不会有 0,那么可以使用 Integer 而不是 Long 吗?
  • @CaptainMan 您在 Facelets 中编写的任何 整数 都将被视为 Long,因此请将您的地图重新声明为 Map&lt;Long, String&gt;。这就是这个答案基本上告诉你的。
  • @CaptainMan 如果无法更改您的地图,您可以在 EL 中使用“longToInteger()”
猜你喜欢
  • 2013-03-25
  • 2013-10-27
  • 2011-03-11
  • 1970-01-01
  • 2020-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多