我正在浏览一些Struts 2代码,我看到了以前没见过的提交按钮的语法..
<s:submit key="map.keyName$Value" />
它不起作用(它现在与Struts 2.0.x一起使用,现在我们已经转移到Struts 2.2.3)了。我的意思是它没有根据地图中提到的键设置适当的值。
之前有没有人使用过这种语法?
任何其他替代语法建议都会让我在地图中设置值(仅使用struts标记),这是非常受欢迎的。
包含此代码的jsp页面被设计为一个解耦组件,可以在运行时被任何页面包含,这就是为什么这个页面不能调用任何java代码在java map中设置这些值的原因 - 这就是为什么我在寻找标签可以在地图中设置值的解决方案。
提前致谢
答案 0 :(得分:2)
通过以下方式在地图中设置值:
仅限JSP
OGNL 转让声明:
<s:set var="" value="map[key] = keyValue" />
<强>爪哇强>
<s:set var="" value="map.put(key, keyValue)" />
修改强>
您可以使用
在地图(到动作类)中设置值<s:hidden name="map[key]" value="keyValue" />
通过带有 onclick 属性的提交按钮,例如(回答 - 假设多个提交按钮):
<script type="text/javascript">
function setMap(key, keyValue) {
document.getElementById("mapToSet").name="map['" + key + "']";
document.getElementById("mapToSet").value=keyValue;
}
</script>
<s:hidden name="test" id="mapToSet" />
<s:submit value="Search" onclick="setMap(key, keyValue)" />
答案 1 :(得分:2)
我在搜索“如何在Struts2中设置地图中的值”时找到了这个页面,它引导我得到以下答案(我理解的是一点点OT):
作为HTML输入元素:
<input type="hidden" name="myField[105]" value="myValue" />
这将填充声明为:
的操作变量Map<Integer, String> myField;
这样:
myField.get(105).equals("myValue"); // == true