プレフィックスをパラメーターとして、または次のような転送のパスで使用できる方法はありますか:
<forward name="test" path="/switch.do&page='/test.do'&prefix='/test'"/>
プレフィックスをパラメーターとして、または次のような転送のパスで使用できる方法はありますか:
<forward name="test" path="/switch.do&page='/test.do'&prefix='/test'"/>
が何を意味するprefix
のかわかりません。サーブレットの名前を参照していると思います。マッピングの一部として、次の転送があるとします。struts-config.xml
action
<forward name="test" path="/switch" />
アクションで利用できるフォワードの名前を取得したい場合は、 で取得できますmapping.findForwards()
。
たとえば、すでに がある場合forward
:
ActionForward forward = mapping.findForward("test");
フォワードの名前は次の方法で取得できます。
String fwdName = forward.getName(); // returns "test"
およびサーブレット名またはパス:
String servletPath = forward.getPath(); // returns "/switch.do"
request
オブジェクトから取得することもできます。
String servletPath = request.getServletPath();
さて、制御を Struts に戻す前に forward を変更して、追加のパラメーターを追加できるようにする場合は、ActionForward
で定義された forward の 1 つに基づいて新しい を作成する必要があります。struts-config.xml
たとえば、次のようになります。
ActionForward forward = mapping.findForward("test");
StringBuilder path = new StringBuilder(forward.getPath());
path.append("?id=");
path.append(someobject.getId());
return new ActionForward(path.toString(), true); // `true` means "do a redirect"
これは、Struts に次のような URL へのリダイレクトを発行するように指示します。/switch.do?id=3
新しい を作成するActionForward
方法と、転送の名前とそれらが指すサーブレット名を取得する方法を知っていれば、必要な転送を作成するのに問題はないはずです。