Spring整合Struts 注入失败,提交第二回了,吭我一百财富值了

<!--Spring中配置Action--><beanid="loginAction"class="com.action.LoginAction"scope="proto... <!-- Spring中配置Action -->
<bean id="loginAction" class="com.action.LoginAction" scope="prototype">
<property name="userService">
<ref bean="userService" />
</property>
</bean>

在Struts.xml中的配置:
<constant name="struts.objectFactory" value="spring" />
<package name="mypackage" extends="struts-default" namespace="/">
<action name="testLogin" class="com.action.LoginAction" method="testLogin">
<result name="success">welcome.jsp</result>
<result name="error">index.jsp</result>
</action>
</package>

这样完全没有任何问题,只要改成:
<action name="testLogin" class="loginAction" method="testLogin">
<result name="welcome">welcome.jsp</result>
<result name="success">welcome.jsp</result>
<result name="error">index.jsp</result>
</action>

立马出现:
Unable to instantiate Action, loginAction, defined for 'testLogin' in namespace '/'loginAction

以及
java.lang.ClassNotFoundException: loginAction

本人猜测:只有两种可能,一就是Spring在这里的这个bean并没有注入,Spring注入的是接口,参照的是实现类。在这里不同的是这个Action是这个实现类。因此在Spring文件开头,加入了:
proxy-target-class="true"></aop:config>
告诉Spring实现类的bean也可以注入了。但是仍然解决不了异常的问题。

二就是路径,或者命名空间namespace 哪里出了问题,求高手指教,都晚上三点了,还没搞对。若能有详细的解释,不胜感激,网上其它的回答看了几十篇了,没有可行的。

再就是除非使用的包不兼容!~~版本不兼容的问题小弟没有太深究。 若有人成功实现上述要求,求你的JAR包。最好能告诉我分别来自哪框架的哪个版本,分开打包过来。QQ:330157550 也欢迎加好友,求指教。谢谢
展开
 我来答
拿破仑哈哈
2011-09-09 · TA获得超过136个赞
知道小有建树答主
回答量:69
采纳率:0%
帮助的人:45.6万
展开全部
从异常上看“java.lang.ClassNotFoundException: loginAction “,你的object容器依然使用的是strutsObjectFactory,而不是spring,因为strutsObjectFactory在实例化这个action时,会把loginAction当成了类全路径,而不是一个beanName;如果是spring的objectFactory的话,则会把他当成一个beanName,就不会抛这个异常了。
你的这个配置似乎没有起作用:
<constant name="struts.objectFactory" value="spring" />
不好意思,只能分析到这里了。
追问
你和我想的一样,首先是Struts的容器分析了这个Action,当找到class="beanName" 时,此时应该交由Sping的BeanFactory去创建这个LoginAction类的实例,而不是由Struts2框架来创建,当找到这个beanName时,然后去关联解析class = com.action.LoginAction ,分析完成后,交给Struts,此时Struts.xml中的Action就不会再报找不到匹配类的问题了。      然后再去找相应method执行action对应的方法,再映射页面。可就是不按这逻辑来啊
冰00星
2011-09-09 · TA获得超过736个赞
知道小有建树答主
回答量:540
采纳率:0%
帮助的人:315万
展开全部
不放在包中,action找不到。
更多追问追答
追问


welcome.jsp
index.jsp

class 替换成 Spring 中注入的bean loginAction 就出错,问题在注入上
追答
如果是我,我就把name也用loginAction,然后method用一个别的不带Login的名字。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jennia菊菊
2011-09-09 · TA获得超过632个赞
知道小有建树答主
回答量:710
采纳率:75%
帮助的人:353万
展开全部
你在com.action.LoginAction加入@Controller("loginAction")了么?
追问
么有使用注解,如果在Action类中加了注解,好像就不用在Spring的配置文件applicationContext.xml 配置这个Action的Bean了吧?
追答
不好意思没帮到忙,我也不清楚了,一直觉得struts的配置和spring的配置没什么关系
注解和配置可以共存吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
枝睿行1074
2011-09-09 · TA获得超过6.2万个赞
知道大有可为答主
回答量:3.2万
采纳率:0%
帮助的人:2217万
展开全部
<constant name="struts.objectFactory" value="spring" />
<package name="mypackage" extends="struts-default" namespace="/">
struts配置文件中:
<action name="testLogin" class="loginAction" method="testLogin">
<result name="success">welcome.jsp</result>
<result name="error">index.jsp</result>
</action>
</package>

class是什么东西啊。。。。
你换成type="com.action.LoginAction"
<ref bean="userService" />这里没有问题吧。。
把代码贴出来看一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
miniapp16d48d3020e5
2011-09-13 · TA获得超过1457个赞
知道小有建树答主
回答量:659
采纳率:0%
帮助的人:508万
展开全部
加了struts2-spring-plugin.jar插件包吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
狠心拒绝
2011-09-13 · TA获得超过371个赞
知道小有建树答主
回答量:374
采纳率:0%
帮助的人:320万
展开全部
<action name="testLogin" class="loginAction" method="testLogin">
class="loginAction" 这里要写类的全名,
按照你的想法,在Spring里配一个实现类,然后用Struts里的配置去引用,这明显行不通。。
追问
我就是想在class这里引用配置的bean,而不是由Struts去生成对象。Spring集成Struts本来就是这么做的。把相应Action类的的实例的生成权以及生命周期维护等交给Spring去管理。经过三天的折腾现在已经搞定了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式