`
yuhaibo6646737
  • 浏览: 16409 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

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"
                  classname="org.apache.struts.validator.FieldChecks"
                   method="validateMask"

..................
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 = Resources.getVarValue("mask", field, validator, request, true);        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)
    {
       Var var = field.getVar(varName);        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)
    {
       String varName = var.getName();
        String varValue = var.getValue();
        if(!var.isResource())
            return varValue;
        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());
       hVars = new FastHashMap();        hMsgs = new FastHashMap();
        args = new Map[0];
.........................
    public void addVar(Var v)
    {
        hVars.put(v.getName(), v);    }
    public Var getVar(String mainKey)
    {
       return (Var)hVars.get(mainKey);    }
    public String getVarValue(String mainKey)
    {
        String value = null;
        Object o = hVars.get(mainKey);
        if(o != null && (o instanceof Var))
        {
            Var v = (Var)o;
            value = v.getValue();
        }
        return value;
    }
    protected String property;
    protected String indexedProperty;
    protected String indexedListProperty;
    protected String key;
    protected String depends;
...........................
分享到:
评论

相关推荐

    commons-validator.doc 用法介绍

    2. 删除ActionForm中的validate方法,因为验证框架会自动处理验证逻辑。 **配置Struts** 1. 在`struts-config.xml`中的`&lt;action&gt;`标签中添加`validate="true"`属性,以启用验证,并指定错误发生时的转发地址。 2. ...

    Struts Validator验证器使用指南

    ### Struts Validator 验证器使用指南 #### 一、Struts Validator 概览 **Struts Validator** 是一个强大的框架,用于简化Web应用程序中的表单验证过程。它首次出现在Struts 0.5版本中,并逐渐发展成为Struts 1.1...

    Struts Validator验证器使用指南.doc

    Struts Validator是一个强大的工具,用于在Struts框架中执行客户端和服务器端的数据验证。这个验证器自Struts 1.1版本开始成为其核心组成部分,极大地增强了应用的健壮性和用户体验。以下是对Struts Validator使用的...

    Struts自动验证框架使用详细讲解

    Struts自动验证框架是Java Web开发中用于处理用户输入验证的一种高效工具,它极大地简化了在Struts应用程序中实现表单验证的过程。该框架通过XML配置文件定义验证规则,避免了编写大量的Java代码来实现验证逻辑,...

    struts1.2验证框架示例

    本文将通过一个具体的示例详细介绍如何在Struts 1.2 应用程序中配置和使用验证框架。 #### 示例分析 本示例主要介绍了如何在Struts 1.2应用中设置验证规则,并展示了如何通过资源文件、配置文件等来进行配置,以...

    struts-validate

    在深入探讨Struts框架中的`struts-validate`概念前,我们先来理解一下Struts框架本身。Struts是一个开源的MVC(Model-View-Controller)框架,用于简化Java Web应用程序的开发。它提供了一种结构化的方法来构建Web...

    struts课件3

    Validator框架作为Struts的一个重要扩展,主要用于数据验证。它可以显著提高开发效率并减少代码量。通过使用此框架,开发者无需在`ActionForm`类中实现`validate()`方法来进行表单验证,而是通过配置XML文件来实现...

    struts原理与实践(六)

    举例来说,在Struts登录示例中,`validator-rules.xml`文件中`required`验证部分的代码定义了一个验证器,它会在表单提交时检查字段是否为空。如果字段为空,就会触发错误消息,该消息的标识符是`errors.required`,...

    stuts表单验证。还成吧

    Struts框架提供了强大的表单验证功能,支持客户端和服务器端两种验证方式。 #### 三、Struts表单验证配置示例解析 根据给定的文件内容,我们可以深入分析Struts表单验证的具体配置方法。 ##### 3.1 配置Struts...

    动态form编写

    动态表单(form)编写在Web开发中是一种常见且重要的技术,尤其在使用Struts框架时。根据提供的文件信息,我们可以深入探讨动态表单在Struts框架中的实现方式及其与DynaActionForm和DynaValidatorForm类的关系。 ### ...

    Shale

    Apache Shale是一个扩展JavaServer Faces (JSF)的框架,它提供了额外的功能,如视图控制器、对话管理、验证、远程处理、Spring集成、可重用视图和测试框架等。在JSF中,默认并不包含客户端验证机制,但Shale通过集成...

Global site tag (gtag.js) - Google Analytics