web.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> <init-param> <param-name>actionPackages</param-name> <param-value>com.wrk.bi.action</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> </web-app>
struts.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constant name="struts.devMode" value="true" /> <constant name="struts.mapper.composite" value="struts" /> <constant name="struts.convention.default.parent.package" value="default-package" /> <constant name="struts.i18n.encoding" value="UTF-8" /> <constant name="struts.locale" value="zh_CN" /> <constant name="struts.multipart.maxSize" value="100000000" /> <package name="default-package" extends="struts-default"> <global-results> <result name="failure">/common/exception.jsp</result> </global-results> <global-exception-mappings> <exception-mapping name="runtimeexception" exception="java.lang.RuntimeException" result="failure" /> </global-exception-mappings> </package> </struts>
Action类代码:
package com.wrk.bi.action; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import com.opensymphony.xwork2.ActionSupport; @SuppressWarnings("serial") @Namespace("ref/WorkDeploy") public class WorkDeployAction extends ActionSupport{ private String SUCCESS; private String ERROR; @Action(value = "queryWork") public String queryWork(){ System.out.println("2222222222"); return SUCCESS; } public String getSUCCESS() { return SUCCESS; } public void setSUCCESS(String success) { SUCCESS = success; } public String getERROR() { return ERROR; } public void setERROR(String error) { ERROR = error; } }
报错:
Struts has detected an unhandled exception:
Messages: | |
File: | org/apache/struts2/impl/StrutsActionProxy.java |
Line number: | 69 |
org.apache.struts2.impl.StrutsActionProxy.getErrorMessage(StrutsActionProxy.java:69) com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185) org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63) org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39) com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:500) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445) java.lang.Thread.run(Thread.java:662)
You are seeing this page because development mode is enabled. Development mode, or devMode, enables extra debugging behaviors and reports to assist developers. To disable this mode, set:
struts.devMode=false
WEB-INF/classes/struts.properties
file.struts2的 bug
在用注释的时候我们想当然的以为在action上面注释Namespace,在方法上面注释action的动作,在实际使用中发现根本不会拼接。
@Namespace("ref/WorkDeploy")
要改的话这样
action的注释改为@Namespace("/")
方法的注释改为@Namespace("/ref/WorkDeploy/add") 如果是add方法
可以在tomcat启动的时候看注释,如果是在action上面注释Namespace的话,action 的namespace读出来的都是空 [].
你这个用注解
外加这个
actionPackages
com.wrk.bi.action
貌似不用struts.xml了吧。
我这里里面有个例子,就是s2sh全注解的例子,就是没用struts2的配置文件struts.xml。
我那个例子是页面通过http发过来的请求能找到execute方法,但是找不到我自定义的方法。
还有,你把http请求过的路径发出来,看看对不对,。直接贴出来这个不好判断吧
private String SUCCESS;
告诉你既然你继承了ActionSupport,那么这个父类中就有这个属性了,而你在子类中又直接有定义了一遍,那么这个属性的值是什么呢?
Action需要返回,你这个属性是空的,不能转向,所以报空指针错误!
private String SUCCESS="success";
或者直接返回SUCCESS!
使用strtus2的注解配置的action必须有一个name = "success"的Result
例如:
...
@Results( { @Result(name = "success", location = "/index.jsp") })
...
public class XXXAction extends ActionSupport {
.....
}
@Namespace("ref/WorkDeploy")改为@Namespace("/ref/WorkDeploy") 试试!命名空间以"/"开头
[code="java"]
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
[/code]
[quote]
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
[/quote]
:idea: lz class不对
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
控制器设置的不对吧,还有就是,你用的struts2是哪个版本?
唉 现在改版了 没有以前那么爽哦 不适应啊
换个mvc框架吧
spring3mvc就比较好上手 :lol:
private String SUCCESS;
private String ERROR;
不需要了吧 Struts2 内部定义了