java - struts2不再接受http map参数?

标签 java struts2 ognl

在 struts2 中,我利用了 struts2 中内置的 OGNL,将我的输入命名为 <input name='bag["item"].property'> 哪个去了 getters/setters getBag().get("item").setProperty(value) 我已经升级到 struts 2.2.1,突然间那些不再起作用:getter 永远不会被调用。

互联网对在参数中使用 OGNL 完全保持沉默,好像从来没有人制作过复杂的表格。

如何取回我的 map 参数?

最佳答案

事实证明,他们加强了对参数名称的限制以提高安全性。

所以我必须添加到我的 struts.xml 中:

       <interceptor-stack name="defaultStack">
          <interceptor-ref name="params">
             <!-- For maps to work -->
             <param name="acceptParamNames">
                 [a-zA-Z0-9\.\]\[\(\)_'\s"/]+
             </param>
          </interceptor-ref>
       </interceptor-stack>

(我的参数名称中有 "s 和/s) 文件上传在那之后停止工作(拦截器堆栈很疯狂),所以我也必须明确地添加它。

更新:最近我强烈建议使用 JSON 来传递复杂的结构,而不是丰富的 OGNL 形式。当然你需要一些 JS。

关于java - struts2不再接受http map参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4132573/

相关文章:

java - 是否有必要从 json 对象中检索所有值?

xml - 文档类型声明包含或指向的标记声明必须格式正确

jsp - Struts2 从 JSP 访问枚举

java - 如何使用 ognl 更改 session 范围属性?

java - JFrame#setLayout(LayoutManager) 不起作用。强制执行 getContentPane().setLayout(LayoutManager)

java - 在 Java 中比较两个声音(有容差)

java - 在 Struts 2 中为特定操作映射配置 SiteMesh?

java - 如何在 JavaScript 警报框中打印 Struts2 ActionMessage

java - 文件下载问题: comma in the file name in Struts 2

java - 一个 ArrayList 添加 2 个不同的选项