0

プレフィックスをパラメーターとして、または次のような転送のパスで使用できる方法はありますか:

<forward name="test" path="/switch.do&page='/test.do'&prefix='/test'"/>
4

1 に答える 1

0

が何を意味するprefixのかわかりません。サーブレットの名前を参照していると思います。マッピングの一部として、次の転送があるとします。struts-config.xmlaction

<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方法と、転送の名前とそれらが指すサーブレット名を取得する方法を知っていれば、必要な転送を作成するのに問題はないはずです。

于 2009-12-16T06:47:42.757 に答える