<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<base href="<%=basePath%>"/>
<title>添加/编辑用户</title>
</head>
<body>
<form action="student.do?save" id="add_form" method="post" enctype="application/x-www-form-urlencoded">
<input type="hidden" id="studentId" name="studentId" value="${student.studentId }"/>
<label>名字:</label><input name="name" id="name" />
<!--错误信息显示在label里面 -->
<label></label>
<label>邮箱:</label><input name="email" id="email"/>
<input type="submit" value="提交"/>
</form>
<script src="<%=basePath%>res/js/jquery.js" type="text/javascript"></script>
<script src="<%=basePath%>res/js/jquery.validate.js" type="text/javascript"></script>
<script src="<%=basePath%>res/js/jquery.validate.js" type="text/javascript"></script>
<script src="<%=basePath%>res/js/messages_cn.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#add_form").validate({
rules: {
"name": {required: true, minlength : 3, maxlength:5},
"email": {required: true, email : true}
}/*
自定义报错文字
,
messages: {
"name" : {required: "不能为空", minlength : "大于3", maxlength: "小于5"},
"email" : {required: "不能为空", email: "请输入正确的email地址"}
} */
,
errorPlacement: function(error, element) {
if ( element.is(":radio") )
error.appendTo( element.parent().next().next() );
else if ( element.is(":checkbox") )
error.appendTo ( element.next() );
else {
error.appendTo( element.next() );//配置错误信息
}
}
});
});
</script>
</body>
</html>
新版本:
/*数据校验,并提交 */
$("#edit_form").validate({
submitHandler:function(form){
//避免重复提交
$('#submit_btn').get(0).disabled = true;
event.preventDefault();
form.submit();
},
rules: {
"name": {required: true, maxlength:20} ,
"downloadUrl":{required: true, maxlength:128}
}
,
messages: {
"name" : {required: "产品名称不能为空", maxlength: "最大不能超过20字符"},
"downloadUrl" : {required: "下载地址不能为空", maxlength: "最大不能超过128字符"}
}
,
errorPlacement: function(error, element) {
if ( element.is(":radio") )
element.after( error );
else if ( element.is(":checkbox") )
element.after( error );
else {
element.after( error );//配置错误信息
}
}
});
在css中如何:
label.error{
border: 1px dashed red;
padding: 5px 5px 5px 5px;
color: red;
margin: 50px 0 10px 10px;
background: #FEE;
font-weight: bold;
}
问题:对于一个表单中同时存在多个不同名称的input字段,比如通讯录,联系人的电话可能有多个,后面几个电话input是使用动态添加的,
<input name="phone" />
<input name="phone"/>//后面这个是动态添加的
这时候使用校验,会发现,操作某一个input的时候,校验会绑定到所有的input中name为phone的上面。这个问题如何解决????????
需要下载jquery以及他的插件,文章介绍
http://my.oschina.net/wangyongqing/blog/59800
服务端数据校验
下载地址:http://sourceforge.net/projects/hibernate/files/hibernate-validator/4.3.0.Final/hibernate-validator-4.3.0.Final-dist.zip/download
1、约束设置
public class Student {
@NotNull(message="学生id不能为空", groups = EditChecks.class)
private Integer studentId;
@NotNull(message="姓名不能为空")
@Min(value=4, message="姓名长度不能小于4", groups = EditChecks.class)
private String name;
private Teacher teacher;
解释:
@NotNull @Min就是hiberante validate默认的一些约束给我们使用(2.4.1节列出了一些我们可以使用的),括号里面meesage定义了不符合约束时候返回的信息,groups是分组
Groups:这个很重要,比如studentId在新增学生的时候,他必然为空,此时他必定为null,但是在编辑的时候他就必须有值,所以hibernate validate就提供了分组的概念,对于有定义某一组,他就使用那组进行约束,如果没有就使用默认组。具体请查看官方文档2.3节校验组。
2、代码中如何处理:
工具类:validateUtils
public class ValidateUtils<T, E> {
public ValidateUtils() {}
private Validator getValidator() {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
return validator;
}
//这里有使用分组
public String getViolationMsgs(T clazz, Class<E> check) {
Validator validator = this.getValidator();
String msg = "";
Set<ConstraintViolation<T>> constraintViolations = null;
constraintViolations = validator.validate(clazz, check);
//判断是否有约束错误
if(!CollectionUtils.isEmpty(constraintViolations)) {
msg = constraintViolations.iterator().next().getMessage();
}
return msg;
}
//不使用分组
public String getViolationMsgs(T clazz) {
Validator validator = this.getValidator();
String msg = "";
Set<ConstraintViolation<T>> constraintViolations = null;
constraintViolations = validator.validate(clazz);
if(!CollectionUtils.isEmpty(constraintViolations)) {
msg = constraintViolations.iterator().next().getMessage();
}
return msg;
}
}
逻辑层类spring mvc的某一个方法
private static ValidateUtils validateUtils = new ValidateUtils();
@RequestMapping(params="save",method={RequestMethod.POST})
public String save(Student student, WebRequest request) {
if(student.getStudentId()==null) {
//String str = validateUtils.getViolationMsgs(student);
//对于保存就使用默认的组,或者使用上面那个也行,下面获取返回的约束message
String str = validateUtils.getViolationMsgs(student, Default.class);
System.out.println(str);
int id = (Integer) this.studentService.save(student);
this.log.debug(id);
}
else {
String str = validateUtils.getViolationMsgs(student, EditChecks.class);
System.out.println(str);
this.studentService.update(student);
}
List<Student> list = this.studentService.findAll(Student.class);
request.setAttribute("list", list, 0);
return "redirect:student.do?list";
}
官方文档中有提供了一些:
1、自定义的约束(判断大小写啊等)
2、启动validate的三种方法。
3、xml配置,等
总结:1、官方提供的基本够用;2、既然我们要使用annotation,就不用xml配置了。3、其他的用到的时候再查,个人感觉上面这些已经够了。
分享到:
相关推荐
jQuery提供了便捷的API和插件来执行数据验证。最常用的jQuery插件之一是jQuery Validation Plugin,它是jQuery生态中的一个强大工具,用于创建复杂的表单验证规则。 1. **安装jQuery Validation Plugin**:在项目中...
在前端开发中,确保用户输入的数据有效性和完整性是至关重要的,这可以避免因无效数据导致的后台处理错误或用户体验下降。jQuery,一个广泛使用的JavaScript库,提供了强大的功能来辅助前端开发者进行非空验证。本篇...
在网页开发中,表单验证是一项至关重要的任务,它确保用户输入的数据符合预期的格式和规则,从而保证数据的准确性和安全性。`jQuery`是一个广泛使用的JavaScript库,它简化了DOM操作,事件处理以及动画效果。`jQuery...
* fmt 标识校验数据类型的格式,目前支持 int 整型 ; float: 小数; mobile:手机号格式校验;email:格式校验; * 前台展示后代码为 * 及格分数</label> 及格分数" fmt="float"> 分 <div name='error'>...
在IT领域,特别是Web开发中,前端数据验证是确保用户输入数据有效性和安全性的重要环节。JavaScript和jQuery作为前端开发中的关键技术,提供了强大的功能来实现这一目标。本文将深入解析一个具体的场景:使用js和...
6. 参照完整性校验:验证数据是否与数据库中的其他表或记录相关联,如检查员工ID是否存在于员工表中。 三、使用数据校验工具的流程 1. 打开“校验工具.exe”:运行提供的可执行文件,启动数据校验工具。 2. 输入...
在前端开发中,JavaScript 是实现用户交互和数据验证的关键技术。`validate.js` 可能是一个专门用于前端验证的库,它提供了丰富的功能,帮助开发者确保用户输入的数据符合预期的格式和规则,从而提高用户体验并保护...
服务端验证确保所有提交的数据都符合预设的规则,例如非空、长度限制、格式校验等。Spring MVC提供了一套强大的工具来实现这一目标。 3. **使用注解进行验证**: Spring MVC支持JSR 303/JSR 349(Bean Validation...
文件名称列表中的“数据校验”可能指的是包含这些jar包的文件夹或者压缩包,其中可能包括`hibernate-validator.jar`、`validation-api.jar`、`classmate.jar`和`jboss-logging.jar`等。 总的来说,`Hibernate ...
3. **依赖的运行时库**:Hibernate校验可能依赖于其他库,如Apache Commons Lang或Jackson等,这些库提供了额外的功能,如字符串处理或JSON解析,它们是验证功能正常工作所必需的。 使用这三个jar包,开发者可以在...
这个插件极大地简化了前端数据验证的过程,为开发者提供了丰富的选项和自定义规则。 首先,`jQuery Validate`的核心功能是验证用户在表单中输入的数据,确保其符合预设的验证规则。例如,我们可以设定密码必须包含...
jQuery表单验证插件通过定义一些规则来实现这样的范围验证,例如min和max属性分别表示允许的最小值和最大值。 在验证参数的设计方面,文章提到了几个关键的参数,它们分别是: - onEmptyText:当输入内容为空时...
使用jQuery进行前端验证,可以在用户提交数据前即时提供反馈,无需等待服务器响应。 **3. jQuery表单验证插件** jQuery有许多优秀的表单验证插件,例如jQuery Validation Plugin。这个插件提供了丰富的验证规则和...
除了基本的注解,Hibernate Validator还提供了自定义校验注解和校验器的能力,使得数据验证更加灵活。例如,你可以创建一个`@Email`注解,检查输入的字符串是否符合电子邮件格式。 此外,`hibernate-loggin`可能指...
结合Hibernate Validator,我们可以实现高效、灵活的数据导入和验证功能。以下是对标题和描述中涉及知识点的详细说明: 1. **Apache POI**: Apache POI 是一个开源项目,它允许Java应用程序读取、写入和修改...
我们将通过实例代码来展示如何构建健壮的前端数据校验。 通过本文的介绍,你应该能够理解并实现基本的JavaScript表单验证。记住,验证是提高应用质量和用户体验的重要步骤。始终确保你的验证逻辑既严格又用户友好。 ...
Struts2提供了强大的数据校验机制,它整合了OGNL(Object-Graph Navigation Language)表达式语言和各种校验框架,如Apache Commons Validator和Hibernate Validator。 1. **Struts2的校验流程**: - 用户通过表单...
jQuery表单验证插件通过提供便捷的API和丰富的功能,极大地简化了前端验证的实现。开发者可以根据项目需求,选择合适的插件进行集成,提升用户体验,降低开发成本。无论是新手还是经验丰富的开发者,掌握jQuery表单...
分组校验: 在某些场景下,同一个POJO可能被不同控制器方法共享,但每个方法需要的校验规则不同。此时,可以利用分组校验来解决。定义多个校验分组(即Java接口),每个分组代表一组校验规则。在需要的控制器方法中...
同时,理解HTML5的form属性和数据属性也有助于更好地利用formValidator。 总的来说,jQuery formValidator和jQuery datepicker是两个实用的jQuery插件,它们大大增强了网页表单的验证和日期选择功能,提升了用户...