0

ログインに成功するindex.jspとリダイレクトされる があります。otl_homepage.jspユーザーがログインしたときに、リストを表示する必要がありますotl_homepage.jsp。私のstruts.xmlでは、type="chain"タイプを指定するか指定しないと、リストが取得されます。しかし、を使用するtype="redirectAction"と、リストは null を返します。このリストを取得するにはどうすればよいですか? リストは、私の Java アクション クラスで維持されます。

struts.xmlこことJavaクラスを見つけてください

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 クラス:

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;
}
4

1 に答える 1

0

別のアクションにリダイレクトした後、アクションでリストを再度入力する必要がありますhome。結果のredirectAction型は別のアクションにリダイレクトされます。別のアクションは、アクション クラスの新しいインスタンスをインスタンス化します。このインスタンスは、JSP の結果を返す前に初期化して設定する必要があります。ValueStackJSP では、パブリック getter メソッドがアクション クラスに存在する場合、リストを返すアクション インスタンスを持つ から取得されたリスト値。

public String home(){
    this.otlUserList= otlAuthenticationController.obtainList();
    System.out.println("size is"+otlUserList.size());
    return "success";
}
于 2015-07-17T09:15:06.880 に答える