SlashesInActionNames更新版本后不起作用的問題

Phoenix Phoenix 2017.11.1 00:00 View(112) Comment (0)

strtus2更新为2.0.11.1,发现SlashesInActionNames不起作用了,也就是说我无法使用下面那样的简化配置:


Xml代码


  1. <package name="admin.security" extends="default"  
  2.              namespace="/security">  
  3.         <default-interceptor-ref name="paramsPrepareParamsStack" />  
  4.         <action name="*/*" class="{1}Action" method="{2}">  
  5.             <result name="index">/pages/admin/security/{1}/index.jsp</result>  
  6.             <result name="input">/pages/admin/security/{1}/edit.jsp</result>  
  7.             <result name="success" type="redirect">{1}/index.do</result>  
  8.         </action>       
  9. </package>




检查了所有可能发生错误的位置,没有找到问题,于是跟踪DefaultActionMapper的代码。发现alwaysSelectFullNamespace为true,这个变量我从未动过,它是定义在default.properties中的,并且缺省值是false。于是在struts.xml中重新定义这个值:
Xml代码


  1. <constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>  
  2.     <constant name="struts.enable.SlashesInActionNames" value="true"></constant>  
  3.     <constant name="struts.mapper.alwaysSelectFullNamespace" value="false"></constant>  
  4.     <constant name="struts.mapper.class" value="org.apache.struts2.dispatcher.mapper.DefaultActionMapper"></constant> 



问题解决。
但是为什么会这样呢?难道是struts2的BUG?
如果真是这样,我也许会用SpringMVC之类的框架了,本来就觉得struts2不太好用。

本文链接 https://www.mangoxo.com/blog/0mxJyloa 版权所有,转载请保留地址链接,感谢!

Latest Comments :