使用JSF EL中的整数键访问映射

时间:2013-06-17 08:04:08

标签: jsf jsf-2 el

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

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

不会返回键0的值。使用String键可以正常工作。

它适用于List<String>,但我希望Map有一些稀疏数组(并非所有索引都有值)

2 个答案:

答案 0 :(得分:7)

EL将您的文字编号0解释为long类型。尝试使用Map<Long,String>代替Map<Integer,String>

这就是你应该做的事情:

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

这就是EL为了取回价值而做的事情:

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

答案 1 :(得分: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))}">