7

バッキング Bean でプロパティを定義しましたMap<Integer,String>。EL から xhtml ファイル内のマップにアクセスしようとすると、何も返されません。

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

キー 0 の値を返しません。文字列キーでは機能します。

で動作しますList<String>が、 Map にある種の疎配列を持たせたいです (すべてのインデックスに値があるわけではありません)。

4

2 に答える 2

8

0EL はリテラル数値をlong型として解釈します。Map<Long,String>の代わりにa を試してください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 に答える