Struts 2 s:提交按钮语法以在map中设置值

时间:2011-09-08 20:22:22

标签: java struts2

我正在浏览一些Struts 2代码,我看到了以前没见过的提交按钮的语法..

<s:submit key="map.keyName$Value" />

它不起作用(它现在与Struts 2.0.x一起使用,现在我们已经转移到Struts 2.2.3)了。我的意思是它没有根据地图中提到的键设置适当的值。

之前有没有人使用过这种语法?

任何其他替代语法建议都会让我在地图中设置值(仅使用struts标记),这是非常受欢迎的。

包含此代码的jsp页面被设计为一个解耦组件,可以在运行时被任何页面包含,这就是为什么这个页面不能调用任何java代码在java map中设置这些值的原因 - 这就是为什么我在寻找标签可以在地图中设置值的解决方案。

提前致谢

2 个答案:

答案 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