【问题标题】:Struts 2 s:submit button syntax to set values in mapStruts 2 s:提交按钮语法以在地图中设置值
【发布时间】:2011-09-08 20:22:22
【问题描述】:

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

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

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

以前有人用过这种语法吗?

任何其他可以让我在地图中设置值的替代语法建议(仅使用 struts 标记)都将受到欢迎。

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

提前致谢

【问题讨论】:

    标签: java struts2


    【解决方案1】:

    在地图中设置值:

    仅在 JSP 中

    OGNL 赋值语句:

    <s:set var="" value="map[key] = keyValue" /> 
    

    Java

    <s:set var="" value="map.put(key, keyValue)" /> 
    

    编辑

    您可以在地图中设置值(到动作类)

    <s:hidden name="map[key]" value="keyValue" />
    

    通过带有 onclick 属性的提交按钮,例如(answer - 假设有多个提交按钮):

    <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)" />
    

    【讨论】:

    • 当点击 s:submit 按钮时,我需要在 map 中设置这个值。 s:set 标签可以嵌套在 s:submit 标签里面吗?
    • 感谢 lschin,您的解决方案完成了这项工作。但我的问题是我不能将我们应用程序的这种关键功能基于 javascript,因为即使最终用户禁用了 javascript,客户端也需要应用程序正常工作。所以我仍在寻找一些基于 struts/jstl 标记的解决方案,它可以为我完成这项设置工作,而无需调用操作。
    【解决方案2】:

    我在搜索“如何在 Struts2 中的地图中设置值”时发现了这个页面,它让我得到了以下答案(我理解这有点 OT):


    作为 HTML 输入元素:

    <input type="hidden" name="myField[105]" value="myValue" />
    

    这将填充声明为的动作变量:

    Map<Integer, String> myField;
    

    这样:

    myField.get(105).equals("myValue"); // == true
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-31
      • 2010-12-31
      • 2012-03-11
      相关资源
      最近更新 更多