5

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

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

如何取回我的地图参数?

4

1 回答 1

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。

于 2010-11-09T12:15:23.097 回答