バッキング Bean でプロパティを定義しましたMap<Integer,String>
。EL から xhtml ファイル内のマップにアクセスしようとすると、何も返されません。
<h:outputLabel value="#{bean.myMap[0]}">
キー 0 の値を返しません。文字列キーでは機能します。
で動作しますList<String>
が、 Map にある種の疎配列を持たせたいです (すべてのインデックスに値があるわけではありません)。
0
EL はリテラル数値をlong
型として解釈します。Map<Long,String>
の代わりにa を試してください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))}">