在支持bean中,我定义了Map<Integer,String>
属性。当试图从xhtml文件中的EL访问地图时,我什么也得不回来。
<h:outputLabel value="#{bean.myMap[0]}">
不会返回键0的值。使用String键可以正常工作。
它适用于List<String>
,但我希望Map有一些稀疏数组(并非所有索引都有值)
答案 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))}">