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的拦截器,以便将操作错误保留在会话范围内,在 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 回答