struts2 拦截器 初始化参数异常

时间:2021-04-30 19:37:54
struts 2.3.24
拦截器:

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
public class TestInterceptor implements Interceptor{
private static final long serialVersionUID = -1491616019732019427L;
private String hello;
public String getHello() {
return hello;
}
public void setHello(String hello) {
this.hello = hello;
}
public String intercept(ActionInvocation arg0) throws Exception {
System.out.print("hello:" + this.hello);
return arg0.invoke();
}
public void init() {
}
public void destroy() {

}
}


配置文件:

<interceptor name="testInterceptor" class="com.xxx.interceptor.TestInterceptor"/>
</interceptors>
<!-- 转向 -->
<action name="next" class="com.xxx.common.action.NextAction">
<!-- 定义逻辑视图和物理资源之间的映射  -->
<result name="success">${address}</result>
<interceptor-ref name="myDefaultStack"/>
<interceptor-ref name="testInterceptor">
<param name="hello">world</param>
</interceptor-ref>
</action>


tomcat6.0.44启动异常:

2015-07-12 10:07:54,292 DEBUG [org.springframework.aop.framework.JdkDynamicAopProxy] - <Creating JDK dynamic proxy: target source is SingletonTargetSource for target object [com.xxx.interceptor.TestInterceptor@57c47a9e]>
2015-07-12 10:07:54,298 WARN [com.opensymphony.xwork2.ognl.OgnlUtil] - <Caught OgnlException while setting property 'hello' on type 'com.sun.proxy.$Proxy39'.>
ognl.NoSuchPropertyException: com.sun.proxy.$Proxy39.hello
at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:166)
at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27)
at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2332)
at ognl.ASTProperty.setValueBody(ASTProperty.java:127)
at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)
at ognl.SimpleNode.setValue(SimpleNode.java:301)
at ognl.Ognl.setValue(Ognl.java:737)
at com.opensymphony.xwork2.ognl.OgnlUtil$1.execute(OgnlUtil.java:287)
at com.opensymphony.xwork2.ognl.OgnlUtil$1.execute(OgnlUtil.java:282)
at com.opensymphony.xwork2.ognl.OgnlUtil.compileAndExecute(OgnlUtil.java:340)
at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:282)
at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:278)
at com.opensymphony.xwork2.ognl.OgnlUtil.internalSetProperty(OgnlUtil.java:547)
at com.opensymphony.xwork2.ognl.OgnlUtil.setProperties(OgnlUtil.java:170)
at com.opensymphony.xwork2.ognl.OgnlUtil.setProperties(OgnlUtil.java:197)
at com.opensymphony.xwork2.ognl.OgnlUtil.setProperties(OgnlUtil.java:184)
at com.opensymphony.xwork2.ognl.OgnlReflectionProvider.setProperties(OgnlReflectionProvider.java:58)
at com.opensymphony.xwork2.factory.DefaultInterceptorFactory.buildInterceptor(DefaultInterceptorFactory.java:43)
at com.opensymphony.xwork2.ObjectFactory.buildInterceptor(ObjectFactory.java:209)
at com.opensymphony.xwork2.config.providers.InterceptorBuilder.constructInterceptorReference(InterceptorBuilder.java:70)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.lookupInterceptorReference(XmlConfigurationProvider.java:1114)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.buildInterceptorList(XmlConfigurationProvider.java:630)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:444)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:556)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:295)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:112)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:264)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)
at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:967)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:435)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:479)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:298)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:119)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4076)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4730)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:802)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:583)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1080)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1003)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:507)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1322)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:325)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1068)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:822)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1060)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:759)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

这个什么情况,hello的getter和setter方法都没错,怎么还是不行呢?

12 个解决方案

#1


该回复于2015-07-13 08:28:33被管理员删除

#2


有哪位大侠遇到过这个问题么,求指教 struts2 拦截器 初始化参数异常

#3


你把struts默认的拦截器放入放入自己定义的拦截栈了吗?

#4


引用 3 楼 s8460049 的回复:
你把struts默认的拦截器放入放入自己定义的拦截栈了吗?

默认的在myDefaultStack里面,话说跟这个应该没关系吧,hello应该是testInterceptor初始化的时候传进去的

#5


清气上升,浊气下沉:顶

#6


报的是ognl异常,我感觉是result的问题,另外你控制台能打出hello world吗

#7


看一下cjr15233661143 的这个帖子吧,看完就明白你的问题了,不解释
.http://blog.csdn.net/cjr15233661143/article/details/24811969

#8


引用 7 楼 qqw6789567 的回复:
看一下cjr15233661143 的这个帖子吧,看完就明白你的问题了,不解释
.http://blog.csdn.net/cjr15233661143/article/details/24811969

恩,他这个帖子说的蛮详细的,拦截器的作用就是代理机制的一种体现,就是struts2默认目标类的代理执行类,struts2默认执行的拦截器是默认拦截栈里的。所以当我们定义自己的拦截器的时候,也要将该栈放入自己的拦截栈

#9


引用 8 楼 s8460049 的回复:
Quote: 引用 7 楼 qqw6789567 的回复:

看一下cjr15233661143 的这个帖子吧,看完就明白你的问题了,不解释
.http://blog.csdn.net/cjr15233661143/article/details/24811969

恩,他这个帖子说的蛮详细的,拦截器的作用就是代理机制的一种体现,就是struts2默认目标类的代理执行类,struts2默认执行的拦截器是默认拦截栈里的。所以当我们定义自己的拦截器的时候,也要将该栈放入自己的拦截栈

其实如果你了解一下设计模式的话会更容易理解,为了体现Java的几个特征,几乎所有的框架,都离不开6大原则的,开闭里氏依赖倒转接口隔离迪米特合成复用,这个比看框架更加重要!!

#10


引用 8 楼 s8460049 的回复:
Quote: 引用 7 楼 qqw6789567 的回复:

看一下cjr15233661143 的这个帖子吧,看完就明白你的问题了,不解释
.http://blog.csdn.net/cjr15233661143/article/details/24811969

恩,他这个帖子说的蛮详细的,拦截器的作用就是代理机制的一种体现,就是struts2默认目标类的代理执行类,struts2默认执行的拦截器是默认拦截栈里的。所以当我们定义自己的拦截器的时候,也要将该栈放入自己的拦截栈

嗯,默认的在myDefaultStack拦截器栈里面

#11


引用 7 楼 qqw6789567 的回复:
看一下cjr15233661143 的这个帖子吧,看完就明白你的问题了,不解释
.http://blog.csdn.net/cjr15233661143/article/details/24811969

谢谢!

#12


http://blog.csdn.net/cjr15233661143/article/details/24811969
大家都说这个链接又用,我怎么没看出来?看完一点儿收获都没有

#1


该回复于2015-07-13 08:28:33被管理员删除

#2


有哪位大侠遇到过这个问题么,求指教 struts2 拦截器 初始化参数异常

#3


你把struts默认的拦截器放入放入自己定义的拦截栈了吗?

#4


引用 3 楼 s8460049 的回复:
你把struts默认的拦截器放入放入自己定义的拦截栈了吗?

默认的在myDefaultStack里面,话说跟这个应该没关系吧,hello应该是testInterceptor初始化的时候传进去的

#5


清气上升,浊气下沉:顶

#6


报的是ognl异常,我感觉是result的问题,另外你控制台能打出hello world吗

#7


看一下cjr15233661143 的这个帖子吧,看完就明白你的问题了,不解释
.http://blog.csdn.net/cjr15233661143/article/details/24811969

#8


引用 7 楼 qqw6789567 的回复:
看一下cjr15233661143 的这个帖子吧,看完就明白你的问题了,不解释
.http://blog.csdn.net/cjr15233661143/article/details/24811969

恩,他这个帖子说的蛮详细的,拦截器的作用就是代理机制的一种体现,就是struts2默认目标类的代理执行类,struts2默认执行的拦截器是默认拦截栈里的。所以当我们定义自己的拦截器的时候,也要将该栈放入自己的拦截栈

#9


引用 8 楼 s8460049 的回复:
Quote: 引用 7 楼 qqw6789567 的回复:

看一下cjr15233661143 的这个帖子吧,看完就明白你的问题了,不解释
.http://blog.csdn.net/cjr15233661143/article/details/24811969

恩,他这个帖子说的蛮详细的,拦截器的作用就是代理机制的一种体现,就是struts2默认目标类的代理执行类,struts2默认执行的拦截器是默认拦截栈里的。所以当我们定义自己的拦截器的时候,也要将该栈放入自己的拦截栈

其实如果你了解一下设计模式的话会更容易理解,为了体现Java的几个特征,几乎所有的框架,都离不开6大原则的,开闭里氏依赖倒转接口隔离迪米特合成复用,这个比看框架更加重要!!

#10


引用 8 楼 s8460049 的回复:
Quote: 引用 7 楼 qqw6789567 的回复:

看一下cjr15233661143 的这个帖子吧,看完就明白你的问题了,不解释
.http://blog.csdn.net/cjr15233661143/article/details/24811969

恩,他这个帖子说的蛮详细的,拦截器的作用就是代理机制的一种体现,就是struts2默认目标类的代理执行类,struts2默认执行的拦截器是默认拦截栈里的。所以当我们定义自己的拦截器的时候,也要将该栈放入自己的拦截栈

嗯,默认的在myDefaultStack拦截器栈里面

#11


引用 7 楼 qqw6789567 的回复:
看一下cjr15233661143 的这个帖子吧,看完就明白你的问题了,不解释
.http://blog.csdn.net/cjr15233661143/article/details/24811969

谢谢!

#12


http://blog.csdn.net/cjr15233661143/article/details/24811969
大家都说这个链接又用,我怎么没看出来?看完一点儿收获都没有