浙江省高等学校教师教育理论培训

微信搜索“毛凌志岗前心得”小程序

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1. http://forum.springsource.org/showthread.php?120752-Mini-test-with-Spring-struts2

     Mini test with Spring-struts2

    Hi everyone!
    I'm a newbie. I get this issue:
    I'm starting with a simple webapp for login.
    I got a NPE while my struts action attempts run its execute method from my LoginAction extended from ActionSupport. userLogin is null and action always fail!
    Code:
    	public String execute() {
    		if (userLogin==null) {
    			logger.debug("No Way! userLogin is null now!");	
    		} else {
    			logger.debug("OK!!!! userLogin is initialized");
    			Utente utenteLogin = userLogin.CheckUser(this.username, this.password);
    			if (utenteLogin.validaName()) {
    				return Action.SUCCESS;	
    			} else {
    				return Action.INPUT;
    			}
    		}
    		return Action.INPUT;
    	}
    That's seems to me strange because spring works fine injecting the right bean in the same LoginAction:
    Code:
    	public void setUserLogin(JdbcUserDao userLogin) {
    		logger.debug("Dao setting");
    		this.userLogin = userLogin;
    		logger.debug(this.userLogin.getTesto());
    	}
    this is my simple Spring appContext:

    Code:
    	  <bean id="dbcpDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" lazy-init="true">
    	    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    	    <property name="url" value="jdbc:mysql://localhost:3306/dbRemo" />
    	    <property name="username" value="test" />
    	    <property name="password" value="test" />
    	  </bean>
    
      	  <bean id="jdbcTemplate" class="org.remo.struts2.JdbcUserDaoImpl">
    		  <property name="dataSource" ref="dbcpDataSource"/>
    		  <property name="testo" value="OK!"/>
    	  </bean>
    
      	  <bean id="Login" class="org.remo.struts2.LoginAction">
    		  <property name="UserLogin" ref="jdbcTemplate" />
    	  </bean>
    Rememeber this is a simple testing app just to learn these frameworks.
    would you please help me.

    Thanx
    Remo

  2. #2
    Join Date
    Sep 2011
    Posts
    2

    Default

    Answer to myself because I found out the issues:

    1) I haven't added the struts2-spring-plugin-xxx.jar.

    2) I haven't put in struts.xml the spring objectFactory with this statement:
    Code:
    <constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
    3) I haven't assigned to the action of the class attribute the same name of the bean identified in spring:
    Code:
    <action name="doLogin" class="loginAction">
    instead of
    Code:
    <action name="doLogin" class="org.xxx.yyy.loginAction">
    for the bean of spring
    Code:
    <bean id="loginAction" scope="prototype" class="org.remo.struts2.LoginAction">
    After that my webapp worked out fine.

    bye
    Remo  
posted on 2012-02-06 23:24  lexus  阅读(265)  评论(0编辑  收藏  举报