Announcement Announcement Module
Collapse
No announcement yet.
Mini test with Spring-struts2 Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    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

    Comment

    Working...
    X