2011-02-10 16 views
0

"/portals/.../A"と "/portals/.../B"の下に提供されるアプリケーションのセクションにStruts2を使用する既存のアプリケーションがあります。設定ファイルは次のようになります。普通のStruts2とStruts2 + Rest Pluginの下で1つのパッケージを設定するには?

<struts> 
    <package name="portals/*" extends="struts-default"> 
     <action name="A" ...> ...</action> 
     <action name="B" ...> ...</action> 
    </package> 
</struts> 

Rest Plugin Jarを追加するまでは問題ありません。それは引き継ぎ、設定を無視するようです。

私が望むのは、ポータルをそのままにして、Rest Pluginによって処理される "rest"という新しいパッケージを追加することです。

http://localhost/portals/ * ....プレーンStruts2の

http://localhost/rest/ * ...

質問をプラグインStruts2の+残りは "どう?" です。

は、私のようないくつかの休息 - プラグインの設定を追加しました:

<constant name="struts.convention.action.suffix" value="Controller"/> 
<constant name="struts.convention.action.mapAllMatches" value="true"/> 
<constant name="struts.convention.default.parent.package" value="rest-default"/> 

が、古いアクションはまだ破られています。

答えて

0

誰かがパッケージ名にアスタミックスを配置するのを見たことがありません。など、あなたのパッケージには、実際にあるかもしれない「ポータル/ *」を意味

「/ポータル/ * /」内のアクションへの呼び出しの前にする必要があります。

IE:「... /ポータル/ */A.actionは」あなただけ言うコールした場合、それはすべての関係についてより明確であるとにかくアクションAを呼び出します。

<package name="portals" extends="struts-default" namespace="/"> 
    ... 
</package> 

あなたはワイルドカードを持つことができますアクションで。これは、URLの一部をキャプチャして、動的にメソッド/クラスを呼び出し、そのワイルドカードと一致するパラメータを設定します。詳しくはhttp://struts.apache.org/2.1.8.1/docs/wildcard-mappings.htmlを参照してください。ただし、これはパッケージには適用できません。

+0

"portals/*"というパッケージを "/portals/ABC/tenant.action"のようなページを扱うために使うのは、おそらくそれを設定する標準的な方法ではありません。私はプラグインを追加するとすべてが壊れます。私は "/ portals/tenant"を動作させることができましたが、このアプリケーションが使用されているので、この時点でURL構造を変更することはできません。 – Artilheiro

+0

残りのプラグインを使用する必要がありますか、またはコンベンションプラグインでは十分ではありませんか? (私は残りのプラグインを使用しないので、まだ動作していない場合、私はそれを掘り下げるでしょう、安らかな流行が何であるかを見つけるよい機会です)。 – Quaternion

+0

安らかなAPIを作成することは、プロジェクトにとって大きな要件です。私はそれが動作するかどうかを確認するために削除しようとします。しかし、コンベンションプラグインは、既存のアクションと設定を破るものだと思うので、別のURLで古いアクションを利用できるようになっていることがわかります。 – Artilheiro