SpringMVC 校验功能(使用JSR-303进行校验 @Valid)

1.首先需要导入相应的maven配置

!!!版本太新的话,有的注解会失效,暂时用之前的版本

<!-- 校验相关 -->
		 <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.3.0.Alpha1</version>
        </dependency>

		<dependency>
			<groupId>javax.validation</groupId>
			<artifactId>validation-api</artifactId>
			<version>1.1.0.Final</version>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.10</version>
		</dependency>

2.Entity实体类配置

    @Length(min=4,max=4,message="id长度为4位")
    @NotNull(message="id不能为空,且长度为4位")
    private String id;

    private String employeename;

    private String employeepassword;
    
    @Email(message="请输入正确的邮箱(邮箱格式不正确)")
    private String employeeemail;
    
    @Max(value=120,message="年龄最大不能查过120岁")
    @Min(value=0,message="年龄要大于0岁")
    private Integer employeeage;

3.controller相应的配置(这里以注册为演示)

@RequestMapping(value="/register",method=RequestMethod.POST)
	public ModelAndView employRegister(@Valid Employee employee,BindingResult result) {
		//员工注册
		ModelAndView modelAndView = new ModelAndView();
		//如果传入的参数有问题,返回注册页面
		if(result.hasErrors()) {
			List<FieldError>  errorList = result.getFieldErrors();
			for (FieldError error : errorList) {
				System.out.println(error.getField()+"*"+error.getDefaultMessage());
			}
			modelAndView.setViewName("getEmByName");
			return modelAndView;
		}
		//如果传入的参数没有问题,进行正常的逻辑操作
		int status = employeeService.insertEmployee(employee);
		if(status<0) {
			modelAndView.addObject("register_msg", "注册失败");
			modelAndView.setViewName("registerResult");
		}
		modelAndView.addObject("register_msg", "注册成功");
		modelAndView.addObject("employee", employee);
		modelAndView.setViewName("registerResult");
		return modelAndView;
	}

4.相应的JSP配置

需要先引入SpringMVC的form标签

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
	<form:form action="login" method="post" modelAttribute="employee">
		<label>employeename:</label>
		<form:input path="employeename" />
		<br />
		<form:errors path="employeename"></form:errors>

		<label>employeepassword:</label>
		<form:password path="employeepassword" />
		<br />
		<form:errors path="employeepassword"></form:errors>
		<button type="submit">登录</button>
	</form:form>

	<hr />

	<form:form action="register" method="post" modelAttribute="employee">
		<label>id:</label>
		<form:input path="id" />
		<form:errors path="id" cssClass="error"></form:errors>
		<br />

		<label>用户名:</label>
		<form:input path="employeename" />
		<form:errors path="employeename" cssClass="error"></form:errors>
		<br />

		<label>密码:</label>
		<form:password path="employeepassword" />
		<form:errors path="employeepassword" cssClass="error"></form:errors>
		<br />

		<label>邮箱:</label>
		<form:input path="employeeemail" />
		<form:errors path="employeeemail" cssClass="error"></form:errors>
		<br />

		<label>年龄:</label>
		<form:input path="employeeage" />
		<form:errors path="employeeage" cssClass="error"></form:errors>
		<br />

		<label>性别:</label>
		<form:radiobutton path="employeesex" value="男" />男
		<form:radiobutton path="employeesex" value="女" />女<br />

		<label>职位:</label>
		<form:select path="employeepost">
			<option value="员工">员工</option>
			<option value="部门">部门</option>
		</form:select>
		<br />

		<label>部门:</label>
		<form:select path="employeedept">
			<option value="市场部">市场部</option>
			<option value="营销部">营销部</option>
		</form:select>
		<br />

		<button type="submit">注册</button>
		<button type="reset">重置</button>
	</form:form>

上面写的form:errors 后面的 cssClass意思是错误提示所在的css类名,我们可以自己创建相应的格式,来让错误信息进行显示,我这里仅仅是做了简单的颜色设置

<style type="text/css">
.error {
	color: red;
}
</style>

5.效果展示

猜你喜欢

转载自blog.csdn.net/zhaoyy0513/article/details/88565444