ActionForwardベースクラスのプロパティの中にredirectというのがあります。 これを"true"に設定することにより、コントロールはリダイレクトされます。 ディフォルトは"false"で、フォワードされます。
ではforwardとredirect、どちらも新しいページに移動するんですが、この2つの違いは?
- forward: HTTPリクエストとリクエストコンテキストの全てがそのまま残る。 同じアプリケーション内のみで使用できる。
- redirect: Webクライアントに新しいHTTPリクエストを要求する(=オリジナルのリクエストパラメータやリクエストコンテキストは失われる)。 同じアプリケーション内/外で使用可能。
このように、Strutsでよく使うActionFormなんかをリクエストコンテキストに保存しても、redirectにしてしまうと消えてしまったりするのです。特に理由がなければディフォルトのフォワードを使うのが好ましいようです。