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