在JSF2中通过EL访问Map中的值

时间:2014-12-16 14:41:11

标签: dictionary jsf-2 el

版本:

Aapche MyFaces 2.1.14

RichFaces 4.3.5

问题:

我有一个实现地图界面的类,如下所示:

public class FormStore implements Map {


    private Map values; 


    public Object get(Object key) {

        return values.get(key);
    }

    public Object put(Object key, Object value) {

        return values.put(key, value);
    }

}

我正在使用此地图将所有提交的表单值存储在我的应用程序中并访问facelet,如下面的facelet代码所示:

 <h:inputText id="phone" value="#{formStore['phone']}" size="12" maxlength="20" required="true">

其中formStore是上面的java类。

现在我在上面的java类中添加了另一个Map,如下所示,它有一些特殊用途。

public class FormStore implements Map {


private Map values; 
private Map additionalValues;


public Object get(Object key) {

    return values.get(key);
}

public Object put(Object key, Object value) {

    return values.put(key, value);
}
//getter and setter method for additionalValues also added 

}

问题是我无法从EL访问这个新地图。我尝试了以下选项:

1)<h:inputText id="phone" value="#{formStore.additionalValues['phone']}" size="12" maxlength="20" required="true">
2)<h:inputText id="phone" value="#{formStore.[additionalValues]['phone']}" size="12" maxlength="20" required="true">
3)<h:inputText id="phone" value="#{formStore[additionalValues]['phone']}" size="12" maxlength="20" required="true">

对于每个选项,它都使用key = additionalValues

调用FormStore.get方法

是否无法从FormStore.java类访问additionalValues地图?

请帮忙。

1 个答案:

答案 0 :(得分:1)

这应该有效

<h:inputText id="phone" value="#{formStore.getAdditionalValues()['phone']}" size="12" maxlength="20" required="true">