ForwardAction

JSPページに、直接他のJSPページへのリンクを張るのはよくないデザインです。 コントローラの一部であるstruts-config.xmlファイルにアプリケーションの全ての流れが含まれているべきなのです。MVC*1 アーキテクチャでは、Viewを選択するのは常にコントローラの仕事です。 と言うことは、直接JSPページにリンクすることは、Model2アーキテクチャに違反するのです。
そこで、もしアクションやフォームなどは必要なく、普通のリンクのみ必要な場合は、ForwardActionを使いましょう。ForwardActionは、RequestDispatcherを使い指定のリソースにフォワードします。 リソースはActionMappingのparameterプロパティで指定します。
例えば:


<html:link page="/index.jsp">ホーム</html:link>
とあるのを、

<html:link action="home">ホーム</html:link>
と変更し、struts-configファイルのaction-mappingでは

<action path="/home"
type="org.apache.struts.actions.ForwardAction"
parameter="/index.jsp" />
のように記入します。 もちろんここでActionFormやそれに伴うValidationを追加してもOKです。

GlobalForwardsを使っている場合ですが、


<global-forwards>
<forward name="home" path="/index.jsp" />
...
のように、パスをindex.jspに指定しまうと、結局は直接JSPページにリンクしているのと同じことになります。 その証拠にブラウザに表示されるURLはhttp://サイト.com/index.jspのようになっているはずです。 そこで、global-forwardを使う場合は次のようにアクションにコントロールをわたします。

<global-forwards>
<forward name="home" path="/home.do" />
...

そして最後にこれを書くのもなんですが…。 forward アトリビュートというものがあります。 上のようなマッピングの変わりに次のようにすることもできます。


<action path="/home"
forward="/index.jsp" />
最初に書いたマッピングとこのマッピング、機能的には同じものです。 ので、誰が見てもあきらかですが、アトリビュートを使うのがベストでしょう(^^)