0

I have a index.jsp which redirects to otl_homepage.jsp on successful login. When the user logs in, I need to display a list in the otl_homepage.jsp. In my struts.xml, if i give type="chain" or no type at all, the list is getting fetched. But if I use type="redirectAction", the list is returning null. How do I obtain this list? The list is maintained in my java action class.

please find the struts.xml here and the java class

struts.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
  <constant name="struts.enable.DynamicMethodInvocation"
    value="false" />
  <constant name="struts.devMode" value="false" />
  <constant name="struts.custom.i18n.resources" value="MessageResource" />
   <constant name="struts.convention.result.path" value="/"></constant>

 <package name="default" namespace="/" extends="struts-default">
        <interceptors>
            <interceptor name="authentication"
                class="com.opentext.planning.interceptor.LoginInterceptor"></interceptor>
            <interceptor-stack name="authStack">
                <interceptor-ref name="authentication"></interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </interceptor-stack>
        </interceptors>

        <default-interceptor-ref name="authStack"></default-interceptor-ref>

       <!--  <global-results>
            <result name="login" type="redirect">/home.action</result>
        </global-results>

        <action name="home">
            <interceptor-ref name="defaultStack"></interceptor-ref>
            <result>/index.jsp</result>
        </action>-->


        <action name="login" class="com.opentext.planning.view.OTLAuthentication" >
            <result name="success" type="redirectAction">Otl_Homepage</result>
            <param name="otlUserList">${otlUserList}</param>
            <result name="login">/index.jsp</result>
            <result name="failure">/index.jsp</result>
            <result name="failure2">/index.jsp</result>
            </action>
            <action name="Otl_Homepage" class="com.opentext.planning.view.OTLAuthentication" method="home">
            <interceptor-ref name="defaultStack"></interceptor-ref>
            <result name="success">/Otl_Homepage.jsp</result>
             <result name="failure">/index.jsp</result>
            <result name="failure2">/index.jsp</result>
            </action>

Java class:

public String execute(){
    System.out.println("inside execute");



    //System.out.println("user is" +user.getUser());
   // System.out.println("username is " +user.getUserName());
    //if("pankaj".equals(user.getUserName()) && "admin".equals(user.getPassword())){
        //System.out.println("inside if");

        if (j_username != null) {
        System.out.println("inside function");
    System.out.println("user name is "+j_username);
   // add userName to the session
    System.out.println("user name is 2"+j_username);
    sessionMap.put("loginId", j_username);
   System.out.println("dunno if the will print");
       // user.setUserName(user.getUserName());
      //  sessionMap.put("USER", j_username);
        status = otlAuthenticationController.loginAuthentication(j_username,j_password);
        if(status == "success")
        {
            this.otlUserList= otlAuthenticationController.obtainList();
            System.out.println("size is"+otlUserList.size());
            return "success";
        }

    }
        return status;
}
Roman C
  • 49,761
  • 33
  • 66
  • 176
  • You've completely skimmed all the observation in [this comment](http://stackoverflow.com/questions/31423696/session-management-using-authentication-in-struts-2#comment50821326_31423696) to your other answer. They're more important than you think, not only to let us understand your code, but especially to let *you* do it. You are having big troubles doing extremely easy things, and the culprit of a big part of this troubles is the whole set of formatting and naming issues. Please fix that or I, and many other people here, will skim your questions without even having finished reading them :/ – Andrea Ligios Jul 17 '15 at 07:55

1 Answers1

0

After redirection to another action you need to populate the list again in the home action. The redirectAction result type redirects to another action. Another action instantiate a new instance of the action class. This instance should be initialized and populated before you return a JSP result. In JSP the list values retrieved from the ValueStack which has an action instance that returned a list if the public getter method exists in the action class.

public String home(){
    this.otlUserList= otlAuthenticationController.obtainList();
    System.out.println("size is"+otlUserList.size());
    return "success";
}
Roman C
  • 49,761
  • 33
  • 66
  • 176