validator框架中自定义校验问题?

longling520 2009-10-11 12:23:07
我写了一个ValidationUtil类用来校验两次密码是否一致?当比较两次密码不一致后,无法显示其错误消息,不知为什么,希望有人能帮我看看,非常感激

ValidationUtil类的代码如下:



package com.tantan.dang.util;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.validator.Field;
import org.apache.commons.validator.GenericValidator;
import org.apache.commons.validator.ValidatorAction;
import org.apache.commons.validator.ValidatorUtil;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.util.RequestUtils;
import org.apache.struts.validator.Resources;


public class ValidationUtil {

@SuppressWarnings("deprecation")
public static boolean validateTwoFields(Object bean, ValidatorAction va,
Field field, ActionErrors errors, HttpServletRequest request) {

String value = ValidatorUtil.getValueAsString(bean, field.getProperty());

String sProperty2 =field.getVarValue("secondProperty");

String value2 = ValidatorUtil.getValueAsString(bean, sProperty2);


if (!GenericValidator.isBlankOrNull(value)) {

try {
if (!value.equals(value2)) {

errors.add(field.getKey(), Resources.getActionError(request, va, field));
return false;
}
} catch (Exception e) {
errors.add(field.getKey(), Resources.getActionError(request,va, field));
return false;
}
}

return true;
}

}




validator-rules.xml配置如下:


<validator name="twofields"
classname="com.tantan.dang.util.ValidationUtil" method="validateTwoFields"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionErrors,
javax.servlet.http.HttpServletRequest"
depends="" msg="errors.twofields">

</validator>




validation.xml的配置如下:

<field property="password" depends="required,twofields">
<arg0 key="register1.password"/>
<arg1 key="register1.password1"/>
<var>
<var-name>secondProperty</var-name>
<var-value>password1</var-value>
</var>
</field>


ApplicationResources.properties配置:

errors.required={0} Must enter
errors.twofields={0} and {1} not match

#Register1_Form
register1.password=password
register1.password1=password1

在注册页面的错误提示:
<html:errors property="password" />


为什么当两次密码不一致时,不能显示错误信息!望高人指点!非常感激

...全文
111 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zl3450341 2009-10-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 longyan621 的回复:]
errors.add(field.getKey(),Resources.getActionError(request, va, field));

<html:errors property="password" /> 这两个红色的值一致么?还有property的值在form里set,get了么?

[/Quote]

打印一下 看得到的值是不是一样的
Rangers_Sword 2009-10-31
  • 打赏
  • 举报
回复
...
夜雨~听风 2009-10-12
  • 打赏
  • 举报
回复
errors.add(field.getKey(), Resources.getActionError(request, va, field));

<html:errors property="password" /> 这两个红色的值一致么?还有property的值在form里set,get了么?
v05120s 2009-10-12
  • 打赏
  • 举报
回复
帮顶
myloveyoyo1314 2009-10-12
  • 打赏
  • 举报
回复
帮顶
swandragon 2009-10-11
  • 打赏
  • 举报
回复
UP,明天研究一下

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧