struts2不再接受http map参数?

时间:2010-11-09 10:20:37

标签: java struts2 ognl

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

互联网完全没有在参数中使用OGNL ,好像没有人制作过复杂的表格。

如何取回我的地图参数?

1 个答案:

答案 0 :(得分:3)

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

所以我必须添加到我的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。