引入了 struts2-spring-plugins 包后 Spring 就会管理你的 Action

Struts2 与 Spring 结合,使用 Spring 来管理 Action 实例,在项目中引入了struts2-spring-plugin-2.2.1.jar 包。然后想到的是既然是要用 Spring 来管理 Action 实例,就得在 struts.xml 里加上:

<constant name="struts.objectFactory" value="spring" /> 

或者是在 struts.properties 里加上一条属性:

struts.objectFactory = spring 

暂时不用 Spring 来管理 Bean,于是把上面的配置去了,也把 web.xml 中的相关 

Spring 的 ContextLoaderListener 也格啦。容器启动的时候却发现:

INFO: Initializing Struts-Spring integration...

Jan 20, 2011 7:32:08 PM org.apache.struts2.spring.StrutsSpringObjectFactory <init>

SEVERE: ********** FATAL ERROR STARTING UP STRUTS-SPRING INTEGRATION **********

Looks like the Spring listener was not configured for your web app!

Nothing will work until WebApplicationContextUtils returns a valid ApplicationContext.

You might need to add the following to web.xml:

    <listener>

        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

    </listener>

Jan 20, 2011 7:32:08 PM org.apache.catalina.core.StandardContext filterStart

SEVERE: Exception starting filter action2

java.lang.NullPointerException

 at com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:189)

 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyResultType(XmlConfigurationProvider.java:479)

 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addResultTypes(XmlConfigurationProvider.java:450)

 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:407)

 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:239)

 at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)

 at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:152)

 at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)

 at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)

 at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)

 at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)

Struts2 并不依赖 Spring 是在 struts2-spring-plugin-2.2.1.jar 中的 struts-plugin.xml 中是这样的配置:


<struts>     

<bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" />         

<!--  Make the Spring object factory the automatic default -->   

<constant name="struts.objectFactory" value="spring" />      

<constant name="struts.class.reloading.watchList" value="" />    

<constant name="struts.class.reloading.acceptClasses" value="" />    

<constant name="struts.class.reloading.reloadConfig" value="false" />     

<package name="spring-default">      

<interceptors>             

<interceptor name="autowiring" />            

 <interceptor name="sessionAutowiring"  />      

</interceptors>     

</package>   

</struts> 


<constant name="struts.objectFactory" value="spring" />,只要引入了 struts2-spring-plugin 插件包就启作用,在 struts.xml 或是 struts.properties 中的设置的该属性完全是多此一举,要知道 spring 这个 objectfactory 也是在这里边声明。

只要引入了 struts2-spring 插件包即可,最好还是从 strtus.xml 或 struts.properties 中把该项目配置拿掉。

推荐文章

性能监视系统的所有层

性能监视系统的所有层

推荐文章

为什么DataGridView有灰色条带?

为什么DataGridView有灰色条带?

推荐文章

在添加和删除项时迭代ArrayCollection

在添加和删除项时迭代ArrayCollection

推荐文章

如何执行UPSERT以便在update part中同时使用新值和旧值

如何执行UPSERT以便在update part中同时使用新值和旧值

推荐文章

代表与活动

代表与活动

推荐文章

Regex总是跳过应该匹配的第一个

Regex总是跳过应该匹配的第一个

推荐文章

如何将UIView作为子视图添加到视图(用于提供用户反馈)

如何将UIView作为子视图添加到视图(用于提供用户反馈)

推荐文章

cakephp元素和Ajax更新

cakephp元素和Ajax更新

推荐文章

什么是IDisposable替代用途?

什么是IDisposable替代用途?

推荐文章

将多字节字符映射到其unicode点表示

将多字节字符映射到其unicode点表示

推荐文章

我的网站上的图像处理工具

我的网站上的图像处理工具

推荐文章

HQL语法问题

HQL语法问题

推荐文章

java HttpClient 403禁止问题?

java HttpClient 403禁止问题?

推荐文章

Android弹出代码

Android弹出代码

推荐文章

循环到NSMutableArray

循环到NSMutableArray

推荐文章

如何使用silverlight在文本框中创建水印?

如何使用silverlight在文本框中创建水印?