精华内容
下载资源
问答
  • validator框架 validate方法

    千次阅读 2009-10-22 09:31:00
    validator框架 validate方法 ActionForm/ValidatorForm/ValidatorActionForm struts 1.3为例validate方法有三种来源,分别继承自ActionForm, ValidatorForm, ValidatorActionForm不同点:(1).继承自ActionForm的...

    validator框架 validate方法 ActionForm/ValidatorForm/ValidatorActionForm struts 1.3为例

    validate方法有三种来源,分别继承自ActionForm, ValidatorForm, ValidatorActionForm

    不同点:

    (1).继承自ActionForm的FormBean,必须覆基类ActionForm的validate()方法,仅能做服务器端检验。需要在struts config.xml中配置中,Action一定要将validate属性设置为validate="true“. 不是Struts Validator框架,也不需要配置文件信息。

    (2).继承自ValidatorForm 或 ValidatorActionForm 的FormBean,是Struts Validator框架。可以做服务器端检验,也可以通过生成JavaScript的方式实现客户端检验。
    (3).作为Struts Validator框架, 必须不能覆盖基类的validate()方法。即必须使用基类的validate()方法,才能保证错误验证正常进行。否则就会屏蔽掉在Validation.xml中定义的验证部分,在系统运行时,validation.xml里对应此FormBean定义的错误验证部分不执行。
    (4).作为Struts Validator框架,需要validator.xml 和 validator-rules.xml 配置文件,无论是服务器还是客户端验证。服务器端验证:validate="true“。客户端验证:validate="false“
    (5).ValidatorForm 和 ValidatorActionForm 的区别。

    ==================================================================================
    一、在对应的Form Beans中重载validate方法

    在struts-config.xml文件中,action节点下有“validate”这样一个属性。在struts框架中,默认属性是validate=”true”。所以如果想通过Form Baens的重载validate方法来验证数据的话,可以不用理会这一点。题外话:如果你在struts-config.xml文件中,设置validate="false"的话,validate方法将不起作用。这一点同样对Validate框架来验证数据起作用。

     

    二、通过Validator框架来验证数据

    1、配置struts-config.xml文件,增加:
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validations.xml"/>
    </plug-in>
    2、配置validation.xml文件
    <formset>
    <form name="userForm"> ----这里的userForm是Form Beans的名字
       ……
    </formset>
    以上是通过validatorForm- or DynaValidatorForm来实现Validate验证的


    现在有这样一个问题,Form Beans可以被多个Action应用,而每个Action可能需要的验证字段都不一样。而在validation.xml中配置的验证方式(如<form name="userForm">)是对这个Form Beans进行的。于是,Form Beans可以继承ValidatorActionForm(当然可以直接配置DynaValidatorActionForm)。如下所示:

    validation.xml文件配置如下:
    <formset>
    <form name="/technology/ createUser ">----这里的采用的是action的path路径
        ……
    </formset>

    三、结合上面的两种验证

    如果即在Form Beans中重载了validate方法,又启用了Validate框架,那会是什么效果呢?

    由于要启用Validate框架,FormBeans需要继承ValidatorForm,查看ValidatorForm的源代码,发现validate方法已经作了处理(真是为Validate框架所服务的)。

    那么在Form Beans中重载了validate方法的话,就会覆盖原有ValidatorForm中对应的功能,所以如果想一起用的话,需要在Form Beans的validate方法中调用errors = super.validate(mapping, request);这句代码是启用Validate框架所要做的工作,然后可以判断errors再作下一步的处理。

    当然也可以先做Form Beans中的validate方法,然后启用Validate框架,要看具体情况而定。

    四、启用客户端验证
    也是结合validation.xml来验证的

    ①在需要客户端验证的jsp中加上这么一句<html:javascript formName=" userForm "/>
    其中formName就是validation.xml中<form name="userForm">所对应的内容

    ②在<html:form中追加一个属性οnsubmit="return validateUserForm(this);"
    它的语法为:return validate + struts-config.xml中定义的form-bean名称 + (this);
    比如:追加οnsubmit="return validateUserForm(this);"

    ==================================================================================
    formset 可以含有language, country 等属性对应java.util.Locale class
    formset 配置:
       form name:对应的表单name,必须与<html:javascript> 中formName属性以及struts-config中ActionForm名称相同。
    <field property="username" //property是字段名称,对应ActionForm属性
    depends="required, minlength,maxlength,idcard">   //depends是validator-rules.xml中的规则名称name
                    <arg0   key="prompt.username"/> //错误信息参数,错误信息文件由message-resources标签指示。参数最多4个
                    <arg1   key="${var:minlength}" name="minlength" resource="false"/>//resource=false说明直接以key的值作为值,而不到message-resources文件中查找对应值
                     //var为下面定义的变量
                    <arg2   key="${var:maxlength}" name="maxlength" resource="false"/>
                    <arg3   key="${var:idcardlength}" name="idcard" resource="false"/>
                    <var>
                        <var-name>maxlength</var-name> //变量名
                        <var-value>16</var-value>//变量值
                    </var>
                    <var>
                      <var-name>minlength</var-name>
                        <var-value>3</var-value>
                    </var>
                    <var>
                        <var-name>idcardlength</var-name>
                        <var-value>15</var-value>
                    </var>
          </field>

    展开全文
  • Struts中validate的几种情况(转) 一、在对应的Form Baens中重载validate方法在struts-config.xml文件中,action节点下有“validate”这样一个属性。在struts框架中,默认属性是validate=”true”。所以如果想通过...

    Struts中validate的几种情况(转) 

     

    一、在对应的Form Baens中重载validate方法
    在struts-config.xml文件中,action节点下有“validate”这样一个属性。在struts框架中,默认属性是validate=”true”。所以如果想通过Form Baens的重载validate方法来验证数据的话,可以不用理会这一点。题外话:如果你在struts-config.xml文件中,设置validate="false"的话,validate方法将不起作用。这一点同样对Validate框架来验证数据起作用。
    二、通过Validate框架来验证数据
    1、首先在struts-config.xml文件中,追加如下代码:
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames"
              value="/WEB-INF/validator-rules.xml,/WEB-INF/validations.xml"/>
    <set-property property="stopOnFirstError" value="false"/>
    </plug-in>
    2、然后编写自己的Form Baens,有两种方式可供选择:
    ① 写的formBaen需要继承ValidatorForm,而不是第一种方法中的ActionForm
    public class UserForm extends ValidatorForm {
                         private String userId = "";
                         private String password = "";
                         public void setUserId(String userId) {
                                       this.userId = userId;
                         }
                         public String getUserId() {
                                       return userId;
                         }
                         。。。。。。
              然后配置struts-config文件
            <form-bean name="userForm"
                type="com.wxhx.presentation.UserForm"/>
    ② 配置struts-config文件
    <form-beans>
            <form-bean name=" userForm"
                type="org.apache.struts.validator.DynaValidatorForm">
                    <form-property name=" userId" type="java.lang.String"/>
                    <form-property name="password" type="java.lang.String"/>
                 </form-bean>
    </form-beans>
    3、配置validation.xml文件
           <formset>
               <form name="userForm"> ----这里的userForm是Form Beans的名字
                <field
                    property="userId"
                    depends="required">
                        <arg key="userForm.userId"/>
                </field>
                <field
                    property="password"
                    depends="required,mask">
                        <arg key="userForm.password"/>
                        <var>
                            <var-name>mask</var-name>
                            <var-value>^[0-9a-zA-Z]*$</var-value>
                        </var>
                </field>
            </form>
           </formset>
           其中key="userForm.userId"和key="userForm.password"需要在资源文件中配置
           这里需要说明一点,例如:<arg key="userForm.password" resource="false"/>
    如果多了resource="false"这句话,那么它不会再从资源文件中去取,而是直接用key值来表示。
    以上是通过validatorForm- or DynaValidatorForm来实现Validate验证的
    (附)
    现在有这样一个问题,Form Beans可以被多个Action应用,而每个Action可能需要的验证字段都不一样。而在validation.xml中配置的验证方式(如<form name="userForm">)是对这个Form Beans进行的。这样的话,如何来验证呢?
    你的Form Beans可以继承ValidatorActionForm(当然可以直接配置DynaValidatorActionForm)。如下所示:
    public class UserForm extends ValidatorActionForm {
    ...
    }
    或是
    <form-bean name=" userForm "
              type="org.apache.struts.validator.DynaValidatorActionForm">
    ...
    </form-bean>
    struts-config文件配置如下:
    <action-mappings>
    <action path="/technology/createUser"
             type="com.wxhx.minihr.CreateUserAction"
             name="userForm"/>
    <action path="/technology/editUser"
             type="com.wxhx.minihr.EditUserAction"
             name="userForm"/>
    </action-mappings>
    validation.xml文件配置如下:
    <formset>
    <form name="/technology/ createUser ">----这里的采用的是action的path路径
        <field property="city"
              depends="required">
          <arg0 key="prompt.city"/>
        </field>
    </form>
    <form name="/technology/editUser ">
        <field property="state"
              depends="required">
          <arg0 key="prompt.state"/>
        </field>
    </form>
    </formset>
    关于validator-rules.xml,定义了常用的一些规则,当然也可以自己追加新的规则。
    这里经常会看到msg="errors.required"字样,也是通过资源文件中配置的,默认的资源如下:
    # -- validator --
    errors.invalid={0} is invalid.
    errors.maxlength={0} can not be greater than {1} characters.
    errors.minlength={0} can not be less than {1} characters.
    errors.range={0} is not in the range {1} through {2}.
    errors.required={0} is required.
    errors.byte={0} must be an byte.
    errors.date={0} is not a date.
    errors.double={0} must be an double.
    errors.float={0} must be an float.
    errors.integer={0} must be an integer.
    errors.long={0} must be an long.
    errors.short={0} must be an short.
    errors.creditcard={0} is not a valid credit card number.
    errors.email={0} is an invalid e-mail address.
    这在struts-blank的例子中会有,在开发项目的时候,注意这些默认资源
    关于自己定义规则,以后再作研究
    三、结合上面的两种验证
    如果即在Form Beans中重载了validate方法,又启用了Validate框架,那会是什么效果呢?
    由于要启用Validate框架,Form Beans需要继承ValidatorForm,查看ValidatorForm的源代码,发现validate方法已经作了处理(真是为Validate框架所服务的)。
    那么在Form Beans中重载了validate方法的话,就会覆盖原有ValidatorForm中对应的功能,所以如果想一起用的话,需要在Form Beans的validate方法中调用errors = super.validate(mapping, request);这句代码是启用Validate框架所要做的工作,然后可以判断errors再作下一步的处理。
    当然也可以先做Form Beans中的validate方法,然后启用Validate框架,要看具体情况而定。
    四、启用客户端验证
    也是结合validation.xml来验证的,我把validation.xml相关的内容在复制下来,便于看清楚:
           <formset>
               <form name="userForm"> ----这里的userForm是Form Beans的名字
                <field
                    property="userId"
                    depends="required">
                        <arg key="userForm.userId"/>
                </field>
                <field
                    property="password"
                    depends="required,mask">
                        <arg key="userForm.password"/>
                        <var>
                            <var-name>mask</var-name>
                            <var-value>^[0-9a-zA-Z]*$</var-value>
                        </var>
                </field>
            </form>
    </formset>
    ①在需要客户端验证的jsp中加上这么一句<html:javascript formName=" userForm "/>
    其中formName就是validation.xml中<form name="userForm">所对应的内容
    ②在<html:form中追加一个属性οnsubmit="return validateUserForm(this);"
    它的语法为:return validate + struts-config.xml中定义的form-bean名称 + (this);
    ③追加<scriptlanguage="Javascript1.1" src="staticJavascript.jsp"></script>
    staticJavascript.jsp的内容为:
    <%@ page language="java" %>
    <%-- set document type to Javascript(addresses a bug in Netscape according
    to a web resource --%>
    <%@ page contentType="application/x-javascript" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <html:javascript dynamicJavascript="false" staticJavascript="true"/>
    这只是一种方式,还有其他简洁的(具体为啥这样,不是很明白,希望得到高人指点)
    比如:追加οnsubmit="return validateUserForm(this);"
    <html:javascript formName="userForm" staticJavascript="true"/>
    展开全文
  • 出现的问题是:在struts2中自定义拦截器后,程序运行时validate方法没有执行,这是怎么回事呢?   与项目问题相关的文件如下: 1、struts.xml文件   2、Action类中的部分代码是如下实现的,出现的问题是添加...

    出现的问题是:在struts2中自定义拦截器后,程序运行时validate方法没有执行,这是怎么回事呢?

     

    与项目问题相关的文件如下:

    1、struts.xml文件


     

    2、Action类中的部分代码是如下实现的,出现的问题是添加了自定义拦截器后,validate方法就不执行了,直接执行execute方法



    上述问题出现的原因是什么呢?问题怎么解决呢?

    回答:问题出现的原因是自定义的拦截器配置在struts.xml配置文件中后,还要手动引入defaultStack拦截器栈。否则defaultStack拦截器栈中所有拦截器的功能都无法实现。

     

    struts.xml的配置应当是:

    <struts>	
        <package name="example" namespace="/" extends="struts-default">
        	<interceptors>
        		<interceptor name="userInterceptor" class="com.yanln.test.action.UserInterceptor"></interceptor>
        	</interceptors>
        	<default-interceptor-ref name="defaultStack"></default-interceptor-ref> 
        	<global-results>
        		<result name="login">login.jsp</result>
        	</global-results>
            <action name="login" class="com.yanln.test.action.LoginAction">
                <interceptor-ref name="userInterceptor"></interceptor-ref> 
                <result name="success" type="redirectAction">indexAction</result>
                <result name="input">index.jsp</result>
            </action>
             <action name="indexAction" class="com.yanln.test.action.IndexAction">  
                <result name="showSystem">success.jsp</result>
            </action>
        </package>
    </struts>

     或者是:

    <struts>	
        <package name="example" namespace="/" extends="struts-default">
        	<interceptors>
        		<interceptor name="userInterceptor" class="com.yanln.test.action.UserInterceptor"></interceptor>
        		<interceptor-stack name="mystack">
            		<interceptor-ref name="defaultStack"></interceptor-ref>
            		<interceptor-ref name="userInterceptor"></interceptor-ref>
            	</interceptor-stack>
        	</interceptors>
        	<default-interceptor-ref name="mystack"></default-interceptor-ref> 
        	<global-results>
        		<result name="login">login.jsp</result>
        	</global-results>
            <action name="login" class="com.yanln.test.action.LoginAction">        	
                <result name="success" type="redirectAction">indexAction</result>
                <result name="input">index.jsp</result>
            </action>
             <action name="indexAction" class="com.yanln.test.action.IndexAction"> 
                <result name="showSystem">success.jsp</result>
            </action>
        </package>
    </struts>

     

     

     

     

     

    展开全文
  • Vue表单预校验 validate方法不生效

    千次阅读 2020-08-29 13:59:56
    修改方法代码为 再来以便错误测试 2不见了,再缩小一下范围,看看是不是我英文打错了(经常) 测试 好的可以结案了,valid方法没有执行 半小时后。。。。。错误出处 在自定义检验规则时,由于我对自定义校验...

    在学习Vue秃头的路上,再遇一难
    为了实现修改用户功能,绑定单击事件函数
    在这里插入图片描述
    函数里先实现表单预验证功能
    在这里插入图片描述
    期待表单验证正确打印一个true,错误打印一个false
    先来错误的测试:
    在这里插入图片描述
    好的可能是意外,再来个正确的
    在这里插入图片描述
    .。。。好的确认是bug了,老规矩哪里有嫌疑哪里打印输出
    修改方法代码为
    在这里插入图片描述
    再来以便错误测试
    在这里插入图片描述
    2不见了,再缩小一下范围,看看是不是我英文打错了(经常)
    在这里插入图片描述
    测试
    在这里插入图片描述
    好的可以结案了,valid方法没有执行
    半小时后。。。。。错误出处
    在这里插入图片描述
    在自定义检验规则时,由于我对自定义校验规则未理解透彻
    在这里插入图片描述
    在Element官方文档中找到了正确用法
    修改代码
    在这里插入图片描述

    测试
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 在struts2中,我们可以实现对action的所有方法进行校验或者对action的指定方法进行校验。 对于输入校验struts2提供了两种实现方法: 1. 采用手工编写代码实现。 2. 基于XML配置方式实现。
  • 今天在jsp页面使用jquery.validate.js校验表单时,始终不起作用,找了大半天终于搞定了。。 form标签旁边显示Invalid location of tag,在网上查了下,还是无果,仔细看了之后,发现form表单写在了中, 郁闷呀,把...
  • validate方法有三种来源,分别继承自ActionForm, ValidatorForm, ValidatorActionForm <br />不同点: <br />(1).继承自ActionForm的FormBean,必须覆基类ActionForm的validate()方法,仅能做...
  • 在表单验证当中,this.$refs.form.validate方法不执行 addUser() { console.log(12); // 可以执行 this.$refs.addFormRef.validate((valid) => { console.log(valid); // 不执行 }); } 注:html代码如下 &...
  • 我们在用element-ui的时候,有时会用不到表单控件,常常会自己做一些自定义的选项,在这个时候这个自定义规则就必须自己来写了,但是写完自定义规则后在提交表单的时候触发不了validate方法 比如this.$refs.formName...
  • Struts, validate()方法

    2016-07-18 11:51:15
    Struts之使用输入校验validate()方法   (2012-11-23 22:19:52) 标签:  validate()   验证   struts验证 ...2)然后进行输入效验(执行validate方法) 3)如果在
  • 本文为原创,如需转载,请注明作者和出处,谢谢!上一篇:Struts2教程3:struts.xml常用配置解析在Struts2中最简单的验证数据的方法是使用validate...这个接口只有一个validate方法。如果Action类实现了这个接口,Str
  • 主要介绍了jQuery validate插件submitHandler提交导致死循环解决方法,对比分析了常见的错误写法造成死循环与正确写法,需要的朋友可以参考下
  • validate()方法的参数中增加ignore属性,将select从忽略的隐藏元素中剔除。 $("select").validate({ignore: ":hidden:not(select)"}); :hidden 选择器选取隐藏的元素。 以下几种情况的元素是隐藏元素: 设置为 ...
  • struts中FormBean的reset和validate方法

    千次阅读 2009-10-22 14:07:00
    Author:兆庆 Write Time:2009-10-22 首先,FormBean常规都是... 一、reset方法:1、对于每个request,控制器都会先调用ActionForm的reset()方法,然后将表单数据组装到ActionForm中。如ActionForm在request范围
  • 修改jquery.validate提示错误方法,将错误信息用弹出框提示 <script src="@Url.Content("~/Scripts/jquery.validate.js")"></script> <script src="@Url.Content("~/Scripts/jquery.validate....
  • jquery-validate插件之resetForm方法 jquery-validate清除历史错误提示信息
  • jQuery Validate

    2016-12-30 01:36:34
    jQuery Validate jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件...
  • HTML validate是指HTML验证。它是通过与标准HTML规则进行比较的方式,分析HTML文档、标记出错误和非标准代码的处理过程。Web页面使用HTML进行渲染,而HTML本身采用了HTML规范作为其规则和标准。通过验证HTML代码...
  • validate验证

    2021-05-05 09:28:48
    validate: jquery的一个插件,依赖jquery使用,Validation是历史最悠久的jQuery插件之一,经过了全球范围内不同项目的验证,并得到了许多Web开发者的好评。 内置验证规则 简单强大的验证信息提示 实时验证 ...
  • callBack() 多写了,保证函数中有且只有一个callBack()可以执行,如果多了的话它也不知道执行哪一个就会...2、callBack() 少写了,导致不能进入 this.$refs.editForm.validate() 函数中 顺便写一下请求后端接口的方...
  • 一、在对应的Form Baens中重载validate方法 在struts-config.xml文件中,action节点下有“validate”这样一个属性。在struts框架中,默认属性是validate=”true”。所以如果想通过Form Baens的重载validate方法来...
  • Query Validate

    2016-02-15 14:19:37
    Query Validate jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证...
  • 在切换select前提交form表单,校验不通过,切换select,提交form表单,调用另一个validate()方法不起作用,获取的返回值仍然是前一次验证的返回值。 解决:在加载页面时,首先将原有的form表单克隆,当切换select时...
  • Struts2数据校验 数据校验分为客户端校验和服务器端校验,客户端校验是指通过JavaScript或jQuery...在Struts2中服务器端校验有两种方式:通过Action的validate()方法校验和使用XWork检验框架实现校验。 1.通过Actio
  • 本文主要介绍Struts2中validate数据校验的两种方法及Struts2常用校验器.  1.Action中的validate()方法 Struts2提供了一个Validateable接口,这个接口只有一个valudate()方法,只要类实现此接口name可以直接被...
  • <!... <title></title> ...<script src="http://static.runoob.com/assets/jquery-validation-1.14.0/dist/jquery.validate.min.js"> ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,859
精华内容 15,143
关键字:

validate方法作用