2
我在Struts2的代码中使用注释时,正在此问题相关。没有映射为命名空间操作[/]和动作名称[ABC]与上下文路径[APP_NAME]
我带注释的Action类,似乎这样的事情这是使用拦截器,和我的架构是基于Spring 3,Struts 2中,并使用Struts2的Convention插件
@InterceptorRefs({
@InterceptorRef("mylogging")
})
public class LoginAction implements ModelDriven{
User user = new User();
List<User> users = new ArrayList<User>();
UserBo userBo;
@Action(value="/login",results={@Result(name="success",type="chain",location="/jsp/successPage.jsp"),
@Result(name="login",type="chain",location="/jsp/userLogin.jsp")})
public String execute() {
if(user.getUserScreenName()==null)
return "login";
System.out.println(userBo.verifyUser(user));
return "success";
}
我也试图包围的细节我的部署描述符
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
<init-param> <param-name>config</param-name> <param-value>struts-default.xml,struts-plugin.xml,struts.xml
</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/resources/config/SpringBeans.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
我已经定义我的拦截在struts.xml
,我只是用定义拦截器和结果类型
<struts>
<constant name="struts.devMode" value="false" />
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.convention.package.locators.basePackage" value="com.abc.lab"/>
<constant name="struts.convention.action.checkImplementsAction" value="false"/>
<constant name="struts.convention.package.locators" value="action,actions,struts,struts2"/> <package name="default" extends="struts-default" namespace="/">
<interceptors>
<interceptor name="mylogging"
class="com.abc.lab.interceptor.LoggingInterceptor">
</interceptor>
<interceptor-stack name="loggingStack">
<interceptor-ref name="mylogging" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors> </package> </struts>
我也试图与devMode
真的还是假的,但它是没有帮助的。
我的目录结构是
+--LmsWar/
| +--pom.xml
| +--src/
| | +--com/
| | | +--abc/
| | | | +--lab/
| | | | | +--actions/
| | | | | | +--HomeAction.java
| | | | | | +--LoginAction.java
| | | | | +--bo/
| | | | | | +--impl/
| | | | | | | +--UserBoImpl.java
| | | | | | +--UserBo.java
| | | | | +--dao/
| | | | | | +--impl/
| | | | | | | +--UserDAOImpl.java
| | | | | | +--UserDAO.java
| | | | | +--filter/
| | | | | +--interceptor/
| | | | | | +--LoggingInterceptor.java
| | | | | +--listener/
| | | | | +--model/
| | +--resources/
| | | +--com/
| | | | +--abc/
| | | | | +--lab/
| | | | | | +--spring/
| | | | | | | +--UserBean.xml
| | | +--config/
| | | | +--database/
| | | | | +--properties/
| | | | | | +--database.properties
| | | | +--spring/
| | | | | +--DataSource.xml
| | | | | +--HibernateSessionFactory.xml
| | | | +--SpringBeans.xml
| | +--struts.properties
| | +--struts.xml
| +--WebRoot/
| | +--jsp/
| | | +--common/
| | | +--layout/
| | +--WEB-INF/
| | | +--classes/
| | | +--lib/
| | | +--tiles.xml
| | | +--web.xml
编辑:
进入更多的细节,并添加详细的测井公司我在日志中有一件事后。
2013-07-23 16:40:01,578 ERROR com.opensymphony.xwork2.util.finder.ClassFinder.error:38 - Unable to read class [com.abc.lab.actions.LoginAction] java.lang.NoSuchMethodError: org.objectweb.asm.ClassReader.accept(Lorg/objectweb/asm/ClassVisitor;I)V
而且它是唯一一个我在这里提到的,而它给在我的应用程序可用的每个动作类相同的异常例外。