无法显示Struts2 fieldError

时间:2012-04-26 09:29:48

标签: struts2 struts-validation

我创建了发送动作请求的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来检查服务器端验证

1 个答案:

答案 0 :(得分:0)

Struts提供了一种使用MessageStoreInterceptor处理此问题的方法,但我不知道你为什么要手动处理它。