日期:2014-05-19  浏览次数:20599 次

关于webwork/struts2和spring整合的一个很费解问题
有一个问题很是不明白查了百度的N篇文档也没有说清楚的
问题描述如下:
1.之前弄过的一个webwork和spring整合的例子,配置了webwork.objectFactory = spring,
webwork.objectFactory.spring.autoWire = name两项, 意思就是说明了webwork的action是要交给spring来管理的,但是在spring的配置文件中 又没有配置 <bean id="action别名" class="action全路径">,反倒是在webwork.xml中直接配置的<action name="xx" class="action完整类名">.那这样以来配置上面的两项就没有意义了啊? 于是我把他注释掉 则项目无法登陆了 (登陆的action有问题了) 请教各位明白的人给与解释,谢啦

2.我拿struts2和spring整合同样做了个跟上面一样的实验,注释掉struts.objectFactory=spring,程序依然可以正常,我迷茫了,于是又测试一种情况(此时并没有打开struts.objectFactory=spring的注释) 把struts2的action交给spring管理(也就是配置bean id="action别名" class="action完整路径"),然后在struts.xml中指定action的class为bean中的id, 程序同样正常运行, 可是我此时并没有打开struts.objectObject的配置啊 迷茫啊 求解释

------解决方案--------------------
这个问题需要问哪些研究不要透彻的人了。是不是jar包里面有默认的配置属性!!!!
------解决方案--------------------
检查有没有包:struts2-spring-plugin.jar
这里面的配置文件,struts-plugin.xml中包含
<constant name="struts.objectFactory" value="spring" />
将覆盖掉struts2中struts.objectFactory的值。
所以有这个包,不用配置struts.objectFactory,也一样可以实现struts2 spring整合。
------解决方案--------------------
关于第一个问题,struts配置action,和spring配置bean是两回事。
这么简单理解(未必全面),action主要控制层,控制页面跳转,bean是service服务层,是业务逻辑。
------解决方案--------------------
我也是遇到过类似的问题,希望你解决后能发一下