在支持 bean 中,我定义了一个Map<Integer,String>
属性。当试图从 xhtml 文件中的 EL 访问地图时,我什么也没得到。
<h:outputLabel value="#{bean.myMap[0]}">
不返回键 0 的值。使用 String 键它可以工作。
它适用于 a List<String>
,但我希望 Map 具有某种稀疏数组(并非所有索引都有值)
EL 将您的文字数字解释0
为long
类型。尝试 aMap<Long,String>
而不是Map<Integer,String>
.
这就是你应该做的:
myMap.put(Integer.valueOf(0), "SomeValue");
这就是 EL 为取回价值所做的事情:
String value = myMap.get(Long.valueOf(0));
我有同样的问题,当我在谷歌搜索解决方案时发现了这个问题。更改地图对我来说并不是一个真正的选择,因为它是自动生成的代码,所以这就是我最终要做的。
我创建了一个托管 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))}">