3

URL(/ *)ごとに呼び出されるように構成されたサーブレットフィルターを作成しました。何らかの条件に基づいて、条件が満たされれば、chain.doFilter(request,response)で通常の実行を続行したいのですが、エラーメッセージ付きの同じリクエストURLも開きたいです。

「特定のテキストボックスに入力された値が正しくないと言う」。これは可能ですか?

使用する必要がありますresponse.sendRedirect(request.getURL())か?各URLにフィルターを構成したので、無限ループに陥らないことを願っています。リクエストパラメータの検証チェックを行っています。

4

1 に答える 1

5

サーブレットで行うのと同じように、転送を実行してください。

request.getRequestDispatcher("/WEB-INF/some.jsp").forward(request, response);

デフォルトでは、フィルターは転送時に (再) 呼び出されません。追加の利点は、JSP が同じ要求を再利用するため、セッションまたは Cookie ベースの回避策/ハックを必要とせずに、検証エラー メッセージを要求属性として設定できることです。


具体的な問題とは関係ありませんが、これは完全に正しいアプローチではありません。フォーム固有の検証ジョブは、フィルターではなく、サーブレットで実行する必要があります。サーブレットを DRY に保ちたい場合は、フロント コントローラー パターンを調べるか、JSFSpring MVCなど、フロント コントローラー サーブレットと適切な検証をすぐに提供する MVC フレームワークを採用します。

于 2012-12-03T12:54:04.443 に答える