JSP中的Struts Map引用

时间:2011-11-22 16:17:51

标签: jsp struts el

我的问题比下面更复杂,但我试图简化一些事情。

我的表格中有以下内容:

public class MyForm extends ActionForm {
    private Map<Long, String> myValues;

    public MyForm() {
        setMyValues(new HashMap<Long, String>());
    }

    public Map<Long, String> getMyValues() {
        return myValues;
    }

    public void setMyValues(Map<Long, String> myValues) {
        this.myValues = myValues;
    }

    public Object getMyValue(String key) {
        return getMyValues().get(key);
    }

    public void setMyValue(String key, Object value) {
        getMyValues().put(Long.valueOf(key), value.toString());
    }
}

如果我在我的JSP页面中为表单尝试此操作,除了最后一行之外,所有行都是值:

<c:forEach items="${MyForm.myValues}" var="mapEntry">
    <c:out value="${mapEntry.value}" />
    <c:out value="${mapEntry.key}" />
    <c:out value="${MyForm.myValue(mapEntry.key)}" />
</c:forEach>

最后一行导致页面断开“当未指定默认命名空间时,函数myValue必须与前缀一起使用”。有谁知道访问特定键的映射值的正确方法?正如我所说,它比上述更复杂。我需要类似于最后一行的东西才能工作。

更新

请注意,以下内容确实有效,其中#是任何整数:

<textarea name="myValue(#)"><textarea>

1 个答案:

答案 0 :(得分:2)

即时值:

<c:out value="${MyForm.myValues[1]}" />

表单值的键:

<c:out value="${MyForm.myValues[MyForm.anId]}" />

请求属性中的键:

<c:out value="${MyForm.myValues[wat]}"/>

为什么要使用<c:out>?我们有JSP EL。

${MyForm.myValues[wat]}