我在页面请求这个action的时候,userinfoSerive始终为空,不明白是为什么。
spring3+ibatis3+struts2web.xml如下: 
Java代码 1.<filter> 
2. <filter-name>struts2</filter-name> 
3. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
4. </filter> 
5. <filter-mapping> 
6. <filter-name>struts2</filter-name> 
7. <url-pattern>*.action</url-pattern> 
8. </filter-mapping> 
9. <filter-mapping> 
10. <filter-name>struts2</filter-name> 
11. <url-pattern>*.jsp</url-pattern> 
12. </filter-mapping> 
13. <listener> 
14. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
15. </listener> spring配置注入如下: 
Java代码 1.<bean id="springUserinfoDao" class="com.easyui.model.dao.UserinfoDao"> 
2. <property name="sqlMapClient" ref="sqlMapClient"></property> 
3. </bean> 
4. 
5. <bean id="springUserinfoService" class="com.easyui.model.service.UserinfoSerive"> 
6. <property name="genericDAO" ref="springUserinfoDao"></property> 
7. </bean> 
8. 
9. <bean id="springUserinfoAction" class="com.easyui.web.action.UserinfoAction"> 
10. <property name="userinfoService" ref="springUserinfoService"></property> 
11. </bean> sqlMapConfig.xml 
Java代码 1.<sqlMapConfig> 
2. <sqlMap resource="com/easyui/model/entity/Userinfo.xml"/> 
3.</sqlMapConfig> userinfo.xml 
Java代码 1.<struts> 
2. <package name="userinfo" extends="default"> 
3. <action name="userinfo" class="springUserinfoAction"> 
4. <result >/ok.jsp</result> 
5. </action> 
6. </package> 
7.</struts> action如下: 
Java代码 1.private IUserinfoService userinfoService; 
2. 
3. @Override 
4. public String execute() { 
5. try { 
6. System.out.println(userinfoService); 
7. data = userinfoService.findAll(); 
8. return SUCCESS; 
9. } catch (Exception e) { 
10. e.printStackTrace(); 
11. return ERROR; 
12. } 
13. } 
14.public void setUserinfoService(IUserinfoService userinfoService) { 
15. this.userinfoService = userinfoService; 
16. System.out.println("-->"+this.userinfoService); 
17. } 
我的tomcat6启动信息:只贴部分 
信息: Deploying web application directory docs 
2010-10-11 16:53:36 org.apache.catalina.startup.HostConfig deployDirectory 
信息: Deploying web application directory easyui 
2010-10-11 16:53:38 org.apache.catalina.core.ApplicationContext log 
信息: Initializing Spring root WebApplicationContext 
-->com.easyui.model.service.UserinfoSerive@c05d952010-10-11 16:53:45 org.apache.catalina.startup.HostConfig deployDirectory
 信息: Deploying web application directory examples 
2010-10-11 16:53:45 org.apache.catalina.core.ApplicationContext log 
信息: ContextListener: contextInitialized() 
2010-10-11 16:53:45 org.apache.catalina.core.ApplicationContext log 
信息: SessionListener: contextInitialized() 
2010-10-11 16:53:45 org.apache.catalina.startup.HostConfig deployDirectory 
信息: Deploying web application directory file 
2010-10-11 16:53:45 org.apache.catalina.startup.HostConfig deployDirectory 
信息: Deploying web application directory ROOT 
2010-10-11 16:53:45 org.apache.coyote.http11.Http11Protocol start 
信息: Starting Coyote HTTP/1.1 on http-8086 
2010-10-11 16:53:45 org.apache.jk.common.ChannelSocket init 
信息: JK: ajp13 listening on /0.0.0.0:8009 
2010-10-11 16:53:45 org.apache.jk.server.JkMain start 
信息: Jk running ID=0 time=0/50 config=null 
2010-10-11 16:53:45 org.apache.catalina.startup.Catalina start 
信息: Server startup in 9646 ms 现在说问题: 
我在页面请求这个action的时候,userinfoSerive始终为空,不明白是为什么。 
还有我单元测试的时候都OK。 
下面是单元测试代码: 
Java代码 1.@Before 
2. public void setUp() 
3. { 
4. userinfoActon = (UserinfoAction) getBean("springUserinfoAction"); 
5. } 
6.@Test 
7. public void findAll() 
8. { 
9. System.out.println(userinfoActon.execute()); 
10. } 
项目构架是:struts2+Spring3+Ibatis3 困惑中,欢迎大家解惑。 

解决方案 »

  1.   

    userinfoSerive 这个没有 set方法。 在action 中添加 set方法就ok
      

  2.   


    14.public void setUserinfoService(IUserinfoService userinfoService) {  
    15. this.userinfoService = userinfoService;  
    16. System.out.println("-->"+this.userinfoService);  
    17. } 这不是有吗?
    启动还输出了
      

  3.   

    看上去是你的action创建没有交给Spring去管理,插件的JAR包都齐了么?还有就是XML文件里面改成这个试试<url-pattern>/*</url-pattern>  
      

  4.   

    我试下,我也觉得我的spring和struts好像没关联上。
      

  5.   

    struts2-spring-plugin-2.2.1.jar 这个jar包放进lib里面了么
      

  6.   


    9. <filter-mapping>  
    10. <filter-name>struts2</filter-name>  
    11. <url-pattern>*.jsp</url-pattern>  
    12. </filter-mapping>  把这行代码也删了,一步一步排错,看看是哪里出了问题。
      

  7.   

    问题已解决!
    action的name不能叫userinfo
      

  8.   

    ibatis,其中xml内,多一个表内没有的字段,那么就运行不通过!这点比较郁闷,没有啥提示,就是空的。运行不通过。要是有提示就好了!哎!
      

  9.   

    <package name="userinfo" extends="default"> 
    <action name="userinfo" class="springUserinfoAction">  
    是这里的配置问题吗?