我创建了发送动作请求的 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