【问题标题】:Access map with integer key from JSF EL使用来自 JSF EL 的整数键访问映射
【发布时间】:2013-06-13 03:13:48
【问题描述】:

在一个支持 bean 中,我定义了一个 Map<Integer,String> 属性。当尝试从 xhtml 文件中的 EL 访问地图时,我什么也得不到。

<h:outputLabel value="#{bean.myMap[0]}">

不返回键 0 的值。使用 String 键即可。

它适用于 List&lt;String&gt;,但我希望 Map 具有某种稀疏数组(并非所有索引都有值)

【问题讨论】:

标签: jsf jsf-2 el


【解决方案1】:

EL 将您的文字数字 0 解释为 long 类型。尝试使用Map&lt;Long,String&gt; 而不是Map&lt;Integer,String&gt;。

这就是你应该做的:

myMap.put(Integer.valueOf(0), "SomeValue"); 

这是 EL 为取回价值所做的:

String value = myMap.get(Long.valueOf(0));

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,在搜索解决方案时发现了这个问题。更改地图对我来说并不是一个真正的选择,因为它是自动生成的代码,所以这就是我最终要做的。

    我创建了一个托管 bean:

    package my.bean.tool;
    
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.ApplicationScoped;
    
    @ManagedBean
    @ApplicationScoped
    public class Caster {
    
        public Caster() {
        }
    
        public int toInt(long l) {
            return (int) l;
        }
    }
    

    然后我只是做了你的情况:

    <h:outputLabel value="#{bean.myMap.get(caster.toInt(0))}">
    

    【讨论】:

      猜你喜欢
      • 2010-10-29
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 2015-07-18
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      • 2010-09-24
      相关资源
      最近更新 更多