2

要求されたアクションを提供する前に、ユーザーがログインしているかどうかを確認する intercetpor があります。これをすべてのアクションのデフォルトとして設定しようとしました。1 つを除くすべてのアドレスに対して、これは魅力的に機能します。ルート URL に移動すると、"http://localhost:8080/map/"何らかの理由でインターセプターが起動しません。struts.xml に何か欠けているものがあると思いますが、何がわかりません:

<struts>

    <constant name="struts.devMode" value="true" />
    <constant name="struts.custom.i18n.resources" value="ApplicationResources,DatabaseResources" />

    <package name="map" extends="struts-default">
        <interceptors>
            <interceptor name="loginintercept"
                class="se.contribe.intercept.LoginInterceptor" />
            <interceptor-stack name="defaultLoginStack">
                <interceptor-ref name="loginintercept" />
                <interceptor-ref name="defaultStack" />
            </interceptor-stack>
        </interceptors>

        <default-interceptor-ref name="defaultLoginStack" />

        <default-action-ref name="index"></default-action-ref>

        <global-results>
            <result name="loginneeded">/login.jsp</result>
        </global-results>

        <action name="index" class="**.map.MapAction">
            <result>/index.jsp</result>
        </action>

        <action name="login">
            <result>/login.jsp</result>
        </action>

        <action name="loginInput" class="**.session.LoginAction">
            <result type="redirectAction">
                <param name="actionName">index</param>
            </result>
            <result name="input">/login.jsp</result>
            <result name="error">/login.jsp</result>
        </action>

        <action name="*" class="**.map.MapAction">
            <result>/index.jsp</result>
        </action>
    </package>

</struts>

雇用主が反対する場合に備えて、クラス名を少し難読化しました。

4

2 に答える 2

0

ルート URL はhttp://localhost:8080/map/かもしれませんが、パッケージの「マップ」はhttp://localhost:8080/map/mapを参照します。

おそらく、 http://localhost:8080/map/のルートである "/" に対して定義されたパッケージが必要であり、"" に対して定義されたパッケージが必要な場合があります。これにより、その中のアクションを任意のパッケージ内から実行できるようになります。

編集:上記では、名前空間の名前を混同しました(コンベンションプラグインを使いすぎているようです!)

web.xml ファイルを確認すると、次のようなものが見つかると強く思います。

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

それを次のように変更した場合

<welcome-file-list>
    <welcome-file>index.action</welcome-file>
</welcome-file-list>

index.jsp と index.action の両方を使用し、その設定を変更してどちらか一方を選択できるため、期待どおりの結果が得られます。

于 2011-04-20T20:50:52.867 に答える