2011-12-07 8 views
5

私はStruts2でWebアプリケーションを作成していますが、マップされたアクションにURLを使用すると問題が発生します。Struts 2 - 任意のURLで動作するマップされたアクション

私のstruts.xmlファイルでは、主なものが「register」である、いくつかのアクションで "/ registration"という名前空間を持つパッケージを設定しました。私のアプリのコンテキストルートは "app/test"です。

登録フォームにアクセスするには、 "localhost:8080/app/test/registration/register.action"に行きます。フォームがロードされ、うまく動作します。

しかし、 "localhost:8080/app/test/registration/arbitrary/text/here/register.action"のように、名前空間の後にURLに何かが追加されても、フォームはまだロードされます。

私はこれが起こらないようにしたいので、フォームに適切なURLにしかアクセスできません。私はstruts.xmlとweb.xmlで多くの異なる設定オプションを試してみましたが、この問題に関する知識はWeb上で簡単に見つけることができません。

ありがとうございます、ありがとうございます!

struts.xml

<struts> 
    <package name="myPackage" namespace="/registration" extends="struts-default"> 
     <result-types> 
      <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/> 
     </result-types> 
     <action name="register" class="edu.uconn.test.action.RegistrationAction" method="input"> 
      <result name="input" type="tiles">/register.tiles</result> 
     </action> 
    </package> 
</struts> 

答えて

7

設定しstruts.mapper.alwaysSelectFullNamespace定数trueへ:

<constant name="struts.mapper.alwaysSelectFullNamespace" value="true" /> 

URL内の任意のパラメータ(例えば、ワイルドカード、正規表現パターンマッチングのためのS2のサポートを活用する際にこれが予期しない結果をもたらす可能性があります)。

+0

ありがとうDave!面白いことに、私はstruts設定のドキュメントにいくつかの一見を与えて、完全にこれを逃しています。無関係に多くの感謝! –

+1

@A.Cusanoそれは少し埋葬されています。 –

+0

@DaveNewton:それはstruts2の主な問題です: –

関連する問題