Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JSF EL中的整数键访问映射_Jsf_Jsf 2_El - Fatal编程技术网

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

使用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获

在一个支持bean中,我定义了一个
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页面中提供更多信息:和。另请参阅