我的问题比下面更复杂,但我试图简化一些事情。
我的表格中有以下内容:
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>
答案 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]}