Struts Action匹配出错解决方案
2016-05-24 22:07
423 查看
今天准备试一试通配符来匹配Action,struts.xml里是这样配置的
表单提交页是这样写的
处理Action的类也是有的,但一提交就出错:
There is no Action mapped for namespace [/] and action name [loginAction] associated with context path [/Structs2Demo]. - [unknown location]
这个问题我终于找到了解决方案:答案是别人回答我的
<package name="demo1" extends="struts-default"> <action name="*Action" class="struts2demo.Login2Action" method="{1}"> <result name="success">/jsp/{1}.jsp</result> </action> <action name="*"> <result>/jsp/{1}.jsp</result> </action> </package>
表单提交页是这样写的
<s:form action="loginAction"> <s:textfield name="username" key="username"/> <s:textfield name="password" key="password"/> <s:submit key="submit_login"/> </s:form>
处理Action的类也是有的,但一提交就出错:
There is no Action mapped for namespace [/] and action name [loginAction] associated with context path [/Structs2Demo]. - [unknown location]
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:192) org.apache.struts2.factory.StrutsActionProxy.prepare(StrutsActionProxy.java:63) org.apache.struts2.factory.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37) com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:546) org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:81) org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:113) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Unknown Source)
这个问题我终于找到了解决方案:答案是别人回答我的
2.5版本的与2.2版本之前的不一样,2,2版本以前,直接这样配置就行,从2.3以后,使用通配符的时候需要加入<allowed-methods>,2.5版本取得方法名称后,会验证改方法是否允许访问。所以需要加,里面可以写*,或者多个方法,login,logout等等,用逗号分隔 <action name="*Action" class="XXX.LoginAction" method="{1}" > <result name="success">/jsp/a1.jsp</result> <result name="error">/jsp/a2.jsp</result> <allowed-methods>*</allowed-methods> <!-- 这就是需要添加的地方--> </action>
相关文章推荐
- 详解JavaEE使用过滤器实现登录(用户自动登录 安全登录 取消自动登录黑用户禁止登录)
- codeforces #300 A. Cutting Banner
- MVC入门经典——深入理解原理
- 一致性hash算法 java代码实现与测试
- 计算器(java源码)
- Javaweb开发中通过Servlet生成验证码图片
- Java的值传递
- Java的值传递
- Struts2_CRUD操作实例
- 【Leetcode】:9. Palindrome Number 问题 in JAVA
- 在eclipse中运行maven项目报错
- RxJava + Retrofit 的实际应用场景
- [Java] 实验12
- java登录界面各项设置(enter登录)
- 深入理解Java的接口和抽象类
- Java语法基础之for语句练习
- JavaWeb开发-base64加密(利用java.util包)
- 详解Java正则表达式语法
- 对Java线程池的理解
- RxJava 操作符map