使用JSF EL中的整数键访问映射
在一个支持bean中,我定义了一个使用JSF EL中的整数键访问映射,jsf,jsf-2,el,Jsf,Jsf 2,El,在一个支持bean中,我定义了一个Map属性。当试图从xhtml文件中的EL访问映射时,我什么也没有得到 <h:outputLabel value="#{bean.myMap[0]}"> 不返回键0的值。使用字符串键,它可以工作 它与列表一起工作,但我希望映射具有某种稀疏数组(并非所有索引都有值)EL将文本编号0解释为long类型。尝试Map而不是Map 这就是你应该做的: myMap.put(Integer.valueOf(0), "SomeValue"); 这就是EL获
Map
属性。当试图从xhtml文件中的EL访问映射时,我什么也没有得到
<h:outputLabel value="#{bean.myMap[0]}">
不返回键0的值。使用字符串键,它可以工作
它与
列表一起工作,但我希望映射具有某种稀疏数组(并非所有索引都有值)EL将文本编号0
解释为long
类型。尝试Map
而不是Map
这就是你应该做的:
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))}">
你应该使用omnifaces
:@ronnk omnifaces的哪个组件适用于这里?可能是@LuiggiMendoza的副本很抱歉,我在内存中有一个错误:-)@BjörnMilcke EL和JSTL不一样。EL由${}
和{}
声明,而JSTL是一个有助于EL工作的标记库。在各自的stackoverflow wiki页面中提供更多信息:和。另请参阅