ActionForward動的転送

2498 ワード

ActionForwardの役割は1つのページから別のページにリンクすることであり、最も簡単な応用はmappingである.findForward("success").
プロパティ:name-論理名;path-URL;redirect-true Yesに設定すると、リダイレクトされ、デフォルトはfalseです.className(オプション)-デフォルトはActionForwardです.
一般的な呼び出しプロセス:ActionServiceletがActionを呼び出すと、ActionはMappingのfindForward()を渡します.findForward()は、ローカル転送リストでkeyを探し、見つからない場合はグローバル転送リストから探します.見つからない場合はnullを返し、ブラウザがエラーを報告します.
タグでの使用:
プロファイルにforwardを定義します.

<forward name="article" path="/do/article?dispatch=view"/>

で:

<html:link forward="article" paramName="articleForm" paramProperty="articleKey" paramId="key">News from the edge</html:link>

実行結果:
<a href="http://localhost/artimus/do/article?dispatch=view&key=17">News from the edge</a>

ここで、パラメータがすでに存在する場合、ラベルは接続記号を追加してからパラメータを追加するのに役立ちます.
転送するパスを追加:
public ActionForward execute( ActionMapping mapping,
                              ActionForm form, 
                              HttpServletRequest request,
                              HttpServletResponse response) 
                               throws Exception{
        ActionForward forward = new ActionForward();
        String loginid = ((LoginForm)form).getLoginid();
        String password = ((LoginForm)form).getPassword();
        if(...){
             ......  // business code 
            forward.setPath("welcome.jsp");
        }else{
            ActionMessages errors = new ActionMessages();
            .......
            forward = mapping.findForward("Failure");
        }
        return forward;
    }

Actionクラスにパラメータを追加するには、次の手順に従います.

 ActionForward forward = mapping.findForward("article");
 StringBuffer path = new StringBuffer(forward.getPath());
 boolean isQuery = (path.indexOf("?")>=0);
 if (isQuery)
 path.append("&amp;dispatch=view");
 else
 path.append("?dispatch=view");
 return new ActionForward(path.toString()); 

ActionForwardがリダイレクトに設定されていない場合、新しいパラメータは現在のrequestのパラメータにマージされます.新しいパラメータ名が元のパラメータ名と同じである場合、新しい転送期間内に新しいパラメータ値が使用されます.