私は Struts2 開発が初めてで、最近この命名規則プラグインを使い始めたばかりなので、この問題に苦労しています。
最初は2つのページだけで構成される単純なwebappを作成しようとしています:
- ログインページ (
login.jsp
) - ホームページ (
home.jsp
)
最初にログイン ページがユーザーに表示され、正しいユーザー名とパスワードが提供されると、ユーザーはログインしてホームページにリダイレクトされます。
カスタムログインインターセプターを書き留めて、小さなWebアプリを作成することに成功しました。すべてが正常で、期待どおりに機能しています。HomeAction
ユーザーが のように(home.jsp
以前にログインしていた場合) を直接呼び出そうとすると、ユーザーをログイン ページにリダイレクトできますhttp://myserver/homeAction
。
次のように JSP に直接アクセスしようとすると問題が発生します。
http://myserver/home
this を使用しているためConvention plugin
、Struts はhome.jsp
プラグインを取得して表示します。成功した結果home.jsp
としてのみ表示されるはずなので、これは私が期待した動作ではありません。loginAction
この問題を解決しようとしたこと
まあ、私がグーグルで調べた限りでは、私のJSPを/WEB-INF/
ディレクトリ内に置くとアクセスできなくなるはずですが、そうではありません。私のすべてのJSPは/WEB-INF/content/
.
私が試したもう1つのことは、JSP
リソースへのアクセスをブロックすることでした(*.JSP
リクエストのブロック)。にアクセスしようとしている限り、これはトリックを実行しますmyserver/home.jsp
が、(予想どおり) にアクセスすると失敗しますmyserver/home
。
編集:この問題についてstackoverflowに別の質問がありますが、答えを理解できません: Struts 2 Convention Plugin and JSP files under WEB-INF
情報の更新: Struts2 コンベンション プラグインは「アクションのない結果」と呼ばれるものを使用しているため、拡張子なしでを呼び出すことでディレクトリJSPs
内にアクセスでき、成功時にそれを返すダミー アクションとして処理されます。これは、私が説明しようとしていることを説明するための例です。WEB-INF/content
JSP
JSP
ディレクトリに がありhome.jsp
、を呼び出すと、Struts2 は結果が になるアクションを「トリガー」します。問題の解決策は、この「アクションのない」結果を無効にすることです。WEB-INF/content
http://myserver/home
home.jsp
誰も答えを提供しない場合は、解決策に向かって質問を更新し続けます。