5

Struts2を使用してWebアプリを作成していますが、マップされたアクションが任意のURLで機能するという問題があります。

私のstruts.xmlファイルでは、いくつかのアクションを含む「/registration」という名前空間でパッケージを構成しました。メインのアクションは「register」です。私のアプリのコンテキストルートは「app/test」です。

登録フォームにアクセスするには、「localhost:8080 / app / test / registration / register.action」にアクセスすると、フォームが読み込まれ、正常に機能します。

ただし、名前空間の後にURLに「localhost:8080 / app / test / registerration / Arbitrary / text / here / register.action」などの何かが追加された場合でも、フォームは読み込まれます。

フォームに適切な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>
4

1 に答える 1

7

struts.mapper.alwaysSelectFullNamespace定数をtrue:に設定します

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

これは、URLの任意のパラメーター(ワイルドカード、正規表現パターンマッチングなど)に対するS2のサポートを利用する場合に意図しない結果をもたらす可能性があります。

于 2011-12-08T01:06:33.580 に答える