Code Bye

struts的注解方式不起作用

web.xml中配置:

 <filter>
    <filter-name>struts2</filter-name>
	 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    <init-param>  
            <param-name>actionPackages</param-name>  
            <param-value>manage.action</param-value>  
        </init-param>  
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping> 

struts.xml中配置:

<package name="manage" extends="defaultPackage, json-default" namespace="/">
</package>

action中配置:

@ParentPackage("manage")
@SuppressWarnings("serial")
@Results({
	@Result(name="input",value="/index.jsp"),
	@Result(name="success",value="/index.jsp"),
	@Result(name="test",value="/index.jsp")
})
public class MultiplyAction extends AbstractAction{

报错

There is no Action mapped for namespace [/] and action name [Multiply] associated with context path [/Test1].

如果在struts.xml的manage下加上对该action的配置

<package name="manage" extends="defaultPackage, json-default" namespace="/">
      <action name="Multiply" class="manage.action.MultiplyAction" >
           <result name="success">/index.jsp</result>
       </action>
</package>

?这时走success就可以,但走test就报错

No result defined for action manage.action.MultiplyAction$$EnhancedByS2AOP$$1f102bd and result test

可见别的都正确就是注解方式完全没起作用,那到底是哪里错了呢?


15分
报错是因为你的访问路径配置不正确。不过你的那种配置方式还是第一次见。注释不起作用,可能和jar包或者编辑器有关吧,没有识别出来
找到原因了,是同时加载了struts2-convention-plugin-2.3.1.2.jar和  struts2-codebehind-plugin-2.3.1.2.jar
在web配置的时候用的是struts2-convention-plugin-2.3.1.2.jar下的
在action那里又用的是struts2-codebehind-plugin-2.3.1.2.jar相关的
纠结了两天啊,多谢了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明struts的注解方式不起作用