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;
}
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";
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.