欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

原来是Struts2.0的一个Bug 博客分类: Struts2 StrutsSocketJSPXMLWorkflow 

程序员文章站 2024-02-19 20:50:22
...

开始使用的是Struts2.06版本。在配置Struts.xml的时候,发现了一个问题:

struts.xml代码:

xml 代码
  1. <!---->
  2.         "http://struts.apache.org/dtds/struts-2.0.dtd">  
  3. <struts>  
  4.     <include file="struts-default.xml" />  
  5.     <package name="default" extends="struts-default">  
  6.         <!---->  
  7.         <interceptors>  
  8.             <interceptor-stack name="strutsStack">  
  9.                 <interceptor-ref name="exception" />  
  10.                 <interceptor-ref name="alias" />  
  11.                 <interceptor-ref name="servlet-config" />  
  12.                 <interceptor-ref name="prepare" />  
  13.                 <interceptor-ref name="i18n" />  
  14.                 <interceptor-ref name="chain" />  
  15.                 <interceptor-ref name="debugging" />  
  16.                 <interceptor-ref name="profiling" />  
  17.                 <interceptor-ref name="scoped-model-driven" />  
  18.                 <interceptor-ref name="model-driven" />  
  19.                 <interceptor-ref name="fileUpload" />  
  20.                 <interceptor-ref name="checkbox" />  
  21.                 <interceptor-ref name="static-params" />  
  22.                 <interceptor-ref name="params" />  
  23.   
  24.                 <interceptor-ref name="validation">  
  25.                     <param name="excludeMethods">  
  26.                         input,back,cancel,browse   
  27.                     param>  
  28.                 interceptor-ref>  
  29.                 <interceptor-ref name="workflow">  
  30.                     <param name="excludeMethods">  
  31.                         input,back,cancel,browse   
  32.                     param>  
  33.                 interceptor-ref>  
  34.             interceptor-stack>  
  35.         interceptors>  
  36.         <!---->  
  37.         <default-interceptor-ref name="strutsStack" />  
  38.     package>  
  39.   
  40.     <include file="struts_xml/user.xml" />  
  41.   
  42. struts>  

这是struts.xml所包含的代码。

xml 代码
  1. <!---->
  2.         "http://struts.apache.org/dtds/struts-2.0.dtd">  
  3. <struts>  
  4.   
  5.     <package name="user" extends="default">  
  6.         <!---->  
  7.         <action name="userAction"  
  8.             class="com.leo.controller.UserController" method="userAction">  
  9.             <result name="success">a.jspresult>  
  10.             <result name="input">login.jspresult>  
  11.         action>  
  12.   
  13.         <action name="index" class="com.leo.controller.UserController"  
  14.             method="index">  
  15.             <result name="success">login.jspresult>  
  16.             <result name="input">login.jspresult>  
  17.         action>  
  18.   
  19.         <action name="login" class="com.leo.controller.UserController"  
  20.             method="login">  
  21.             <result name="success" type="redirect-action">  
  22.                 index.action   
  23.             result>  
  24.             <result name="input">login.jspresult>  
  25.         action>  
  26.   
  27.         <action name="logout" class="com.leo.controller.UserController"  
  28.             method="logout">  
  29.             <result name="success">login.jspresult>  
  30.             <result name="input">login.jspresult>  
  31.         action>  
  32.   
  33.     package>  
  34.   
  35. struts>  

这种“包”继承关系是合法的,但在struts2.06版本怎么也无法通过,控制台一直报错:Error building results for action ××× in namespace - action 。调试了很久,Webwork文档与书也翻了N遍,还是没有效果。最后实在没有办法了,换成Struts2.09包,竟然通过了。

大家可以试试,其实Struts2的包继承是非常有用的,很多全局拦截器的设置,Action的设置,以及Result-type等,都可以通过包继承来组织你的配置文件。