struts-validator验证框架的mask验证器使用的细节说明

如下指定arg1元素可以为field正确配置mask:
<arg1 name=”mask” key="${var:mask}" resource="false" >
<var>
<var-name>mask</var-name>
<var-value>^0\d*$</var-value>
</var>
然而,好多人将上面语句<arg1 name=”mask” key="${var:mask}" resource="false" 去掉

后却为什么可以达到一样的目的?花了一下午翻阅jdk,javaeye上搜索,竟然没有查找一

篇文章明确说明这个问题的,难道是约定俗成的,还是什么缘故?
最后还是通过查阅源代码,得到了比文字更有说服力的结果:
<validator name="mask"
[b] classname="org.apache.struts.validator.FieldChecks"
method="validateMask"[/b]
..................
public static boolean validateMask(Object bean, ValidatorAction va, Field field,

ActionMessages errors, Validator validator, HttpServletRequest request)
{
String value;
value = null;
value = evaluateBean(bean, field);
String mask = [b]Resources.getVarValue("mask", field, validator, request, true);[/b] if(value != null && value.length() > 0 && !GenericValidator.matchRegexp(value,

mask))
{
errors.add(field.getKey(), Resources.getActionMessage(validator, request, va,

field));
return false;
}
try
{
return true;
}
..................
public static String getVarValue(String varName, Field field, Validator validator,

HttpServletRequest request, boolean required)
{
[b] Var var = field.getVar(varName);[/b] if(var == null)
{
String msg = sysmsgs.getMessage("variable.missing", varName);
if(required)
throw new IllegalArgumentException(msg);
if(log.isDebugEnabled())
log.debug(field.getProperty() + ": " + msg);
return null;
} else
{
ServletContext application = (ServletContext)validator.getParameterValue

(SERVLET_CONTEXT_PARAM);
return getVarValue(var, application, request, required);
}
.........................
public static String getVarValue(Var var, ServletContext application,

HttpServletRequest request, boolean required)
{
[b] String varName = var.getName();
String varValue = var.getValue();
if(!var.isResource())
return varValue;[/b] String bundle = var.getBundle();
MessageResources messages = getMessageResources(application, request,

bundle);
Locale locale = RequestUtils.getUserLocale(request, null);
String value = messages.getMessage(locale, varValue, null);
if(value == null && required)
throw new IllegalArgumentException(sysmsgs.getMessage

("variable.resource.notfound", varName, varValue, bundle));
if(log.isDebugEnabled())
log.debug("Var=[" + varName + "], " + "bundle=[" + bundle + "], " + "key=["

+ varValue + "], " + "value=[" + value + "]");
return value;
.......................
public Field()
{
property = null;
indexedProperty = null;
indexedListProperty = null;
key = null;
depends = null;
page = 0;
fieldOrder = 0;
dependencyList = Collections.synchronizedList(new ArrayList());
[b] hVars = new FastHashMap();[/b] hMsgs = new FastHashMap();
args = new Map[0];
.........................
public void addVar(Var v)
{
[b] hVars.put(v.getName(), v);[/b] }
public Var getVar(String mainKey)
{
[b] return (Var)hVars.get(mainKey);[/b] }
public String getVarValue(String mainKey)
{
String value = null;
[b]Object o = hVars.get(mainKey);
if(o != null && (o instanceof Var))
{
Var v = (Var)o;
value = v.getValue();
}
return value;[/b] }
protected String property;
protected String indexedProperty;
protected String indexedListProperty;
protected String key;
protected String depends;
...........................
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值