表单校验

一:前台校验

jquery提供了自己的一套自己的校验规则,使用方便,

引入jquery.js和jquery.validate.js文件即可

1、使用jquery的validate组件

$("form.validate-form").validate( {
	onkeyup : false,
	onclick : false,
	onsubmit : true,
	onfocusout : function(element) {$(element).valid();}
});
$("form.validate-form")是获取表单元素

分别在失去焦点和表单提交时进行校验

2、自定义校验规则

$.validator.addMethod("hasChineseChar",function(value,element){
    var reg = /[\u4e00-\u9fa5]+/;
    return !reg.test(value);
},"含有中文字符");

$("form.validate-form").validate( {
    rules:{
        username:"hasChineseChar"
    }
} 

3、动态添加校验规则

rules("add",rules)

var $arr = $("[class*='unique-pk-']");
$arr.each(function(i) {
    var classname = $(this).attr("class");
    var clsarr = classname.split(" ");
    clsarr = $.grep(clsarr, function(ele, i) {
        return ele.indexOf("unique-pk-", 0) >= 0;
    });
    if (clsarr.length > 0) {
       var result = clsarr[0].replace("unique-pk-", "");
       var params = result.split("-");
       $(this).rules("add", {
          remote:{ 
            type:"POST", 
            url:"ajax_unique.action",//后台返回true或 false 
            data:{
              entityClassName:params[0],
              fieldName:params[1],
              fieldValue:function(){return $arr[i].value;} 
            } 
          } 
      }); 
    }
});
//覆盖原有的错误信息
var message_zh = {
   remote:$.validator.format("{0}已注册")
};
$.extend($.validator.messages,message_zh);

二:后台校验

struts2也提供了自己的校验器,在后台可以对参数校验

1、前台jsp中,需要使用struts2提供的标签

<s:form action="validate_add.action" method="post" theme="simple" validate="true">
   <table>
      <tr>
         <td>用户名</td>
         <td><s:textfield name="username"/><s:fielderror fieldName="username" cssClass="tip"/></td>
      </tr>
      <tr><td colspan="2"><s:submit value="提交"></s:submit></td></tr>
   </table>
</s:form>

<s:fielderror />标签可以显示指定元素的错误消息

在struts2的配置文件中必须有input的result

<result name="input">/input.jsp</result>

2、通过手写方法使用校验器

1)对所有请求校验,重写action类中的validate()方法即可

该action类中的所有请求处理方法都会执行该方法

public void validate(){  
   if("admin".equals(username))
      addFieldError("username", "用户名错误");
}

2)对指定请求校验,重写validateXxx()方法即可

如新增请求,在action类由add方法,则添加validateAdd()方法


3、通过xml配置方法使用校验器

使用这种方法需要在jsp页面的表单form添加validate="true"属性才会生效

1)对所有请求校验

如有一个ValidateAction类,则在该类所在的包里添加ValidateAction-validate.xml文件

<!DOCTYPE validators PUBLIC 
       "-//Apache Struts//XWork Validator 1.0.2//EN" 
       "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators> 
   <field name="username"> 
      <field-validator type="requiredstring"> 
         <message key="requiredstring"/> 
      </field-validator> 
   </field>
</validators>

2)对指定请求校验,如现在有一validate_add请求,处理action为VadaliteAction类

则在该类所在的包里添加ValidateAction-validate_add-validate.xml

内容同上

3)自定义校验规则

struts2提供了自己已经定义好的校验规则,如requiredstring,int,url等

如果想用自己定义的校验,

首先要新建一java类,继承FieldValidatorSupport,重写validate方法

public void validate(Object obj) throws ValidationException { 
   String fieldname = getFieldName(); 
   Object val = getFieldValue(fieldname, obj); 
   if(!"admin".equals(val.toString()) 
     addFieldError(fieldname, obj);
}

在src目录下新建validators.xml文件,将新建的类添加进去

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
      "-//OpenSymphony Group//XWork Validator Config 1.0//EN" 
      "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">
<validators> 
   <validator name="myValidate" class="com.validators.MyValidator"/>
</validators>

校验器会先查找根目录下的validators.xml文件

然后再找com.opensymphony.xwork2.validator.validators包下的default.xml文件

如果当前请求action有父类,

则依次查找并加载ParentAction-validate.xml,ParentAction-xxx-validate.xml,

ChildAction-validate.xml,ChildAction-xxx-validate.xml文件

如果其中有冲突,则以后加载的为准










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值