0

アクションリクエストを送信するindex.jspを作成しました

 <meta http-equiv="REFRESH" content="0;url=./radioButton.action">

これが完了すると、リクエストはradio.jspに転送されます。これでは、国、州のリストなどを表示しています(したがって、これをindex.jspからリダイレクトしています)。今、私はこのフォームに検証を課しています。検証のために .xml を正しく作成しました。検証が失敗すると、./radioButton.action にリダイレクトされます。

  <result name="input" type="redirectAction">radioButton</result>

MethodFilterInterceptorを拡張するインターセプターを 1 つ作成しました。これにより、 after() メソッドにフォロー ロジックを持つセッション スコープ内にアクション エラーが保持されます。

if (fieldErrors != null && fieldErrors.size() > 0)
        {
            Iterator it = fieldErrors.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry pairs = (Map.Entry)it.next();
                System.out.println(pairs.getKey() + " = " + pairs.getValue().toString());
            }
            session.put(FIELD_ERRORS_KEY, fieldErrors);
        }

 public static final String FIELD_ERRORS_KEY    = "RedirectMessageInterceptor_FieldErrors";

以下のように.xmlでインターセプターを構成しました

<interceptors>
    <interceptor name="redirectMessage"  class="com.daya.message.RedirectMessageInterceptor" />

       <interceptor-stack name="sessionStack">
        <interceptor-ref name="redirectMessage" />
            <interceptor-ref name="defaultStack" />
       </interceptor-stack>
  </interceptor-stack>
</interceptors>

セッション スコープに入る前に、コンソールにエラー メッセージが表示されます。コンソールに出力される出力は

userName = [User Name is required to login]
password = [Password is required to login]

以下のタグを使用してフィールドエラーを表示しています

<s:fielderror></s:fielderror>

しかし、リダイレクト後 (検証が失敗したとき) の jsp では、メッセージが表示されません。

クライアント側の検証はうまく機能しています。サーバー側の検証を確認するために JavaScript を無効にしました

4

1 に答える 1

0

StrutsがMessageStoreInterceptorを使用してこれを処理する方法を提供しているため、手動で行う理由がわかりません。

于 2012-04-26T11:00:23.413 に答える