7

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

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

不返回键 0 的值。使用 String 键它可以工作。

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

4

2 回答 2

8

EL 将您的文字数字解释0long类型。尝试 aMap<Long,String>而不是Map<Integer,String>.

这就是你应该做的:

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

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

String value = myMap.get(Long.valueOf(0));
于 2013-06-17T08:05:38.153 回答
3

我有同样的问题,当我在谷歌搜索解决方案时发现了这个问题。更改地图对我来说并不是一个真正的选择,因为它是自动生成的代码,所以这就是我最终要做的。

我创建了一个托管 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))}">
于 2015-04-16T07:01:08.373 回答