springmvc4的validation配置

有两种配置,一种是继承一个验证类,一种是注解,这里主要讲注解。

同时注解方式也可细分,一种是将提示信息硬编码到代码里,这种配置简单,另外一种稍微麻烦点,但可以把错误提示信息写到配置文件里。

首先上pom

<!-- 注解规范javax及验证 -->
		<dependency>
			<groupId>javax.validation</groupId>
			<artifactId>validation-api</artifactId>
			<version>1.1.0.Final</version>
		</dependency>
		<dependency>
			<groupId>javax.validation</groupId>
			<artifactId>validation-api</artifactId>
			<version>1.1.0.Final</version>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-validator</artifactId>
			<version>5.2.2.Final</version>
		</dependency>

接着页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="sf" %> 
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<table>
		<sf:form method="post"  action="add" modelAttribute="testVo">
			<fieldset>
				<tr>
					<td><sf:label path="name">姓名</sf:label></td>
					<td><sf:input path="name"/><br/>
						<sf:errors path="name"></sf:errors>
					</td>
				</tr>
				<tr>
					<td><sf:label path="age">年龄</sf:label></td>
					<td><sf:input path="age"/><br/>
						<sf:errors path="age"></sf:errors>
					</td>
				</tr>
				<tr>
					<td><input type="submit" value="submit"/> </td>
					<td><input type="reset" value="reset"/>
					</td>
				</tr>
			</fieldset>
		</sf:form>
	</table>
</body>
</html>

然后controller

/**
 * <p>Description: </p>
 * @author scc
 * @since 创建时间:2015年11月3日 上午10:18:15
 */
@Controller
public class HomeController {
	@Value("#{testDao}")
	private ITestDao iTestDao;
	@RequestMapping("/home")
	public String test1(Model model){
		model.addAttribute("testVo", new TestVO());
		return "index";
	}
	@RequestMapping("/add")
	public String test2(@Valid @ModelAttribute("testVo") TestVO	testVo,BindingResult result){
		if(result.hasErrors()) {
			return "index";
		} else {
			iTestDao.add(testVo);
			return "index";
		}
	}
}

还有TestVo

/**
 * <p>Description: </p>
 * @author scc
 * @since 创建时间:2015年11月3日 上午11:15:31
 */
public class TestVO {
	@Size(min=3,max=5,message="{testvo.name}")
	private String name;
	@NotNull(message="{testvo.age}")
	private Integer age;
	/* 省略setter和getter */
}

注意message这个属性,如果要硬编码提示信息,那么到此就配置完毕,在message里写上提示信息即可,若使用另外一种,则继续往下看,在springmvc的配置文件里

 <!-- spring mvc验证开始 ,若不使用这种配置,需要将错误信息硬编码到代码里,不易修改-->
    <!-- 默认的注解映射的支持 -->  
    <mvc:annotation-driven validator="validator" conversion-service="conversion-service" />
    
    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass"  value="org.hibernate.validator.HibernateValidator"/>
        <!--不设置则默认为classpath下的 ValidationMessages.properties -->
        <property name="validationMessageSource" ref="validatemessageSource"/>
    </bean>
    <bean id="conversion-service" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />
    <bean id="validatemessageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">  
        <property name="basename" value="classpath:validatemessages"/>  
        <property name="fileEncodings" value="utf-8"/>  
        <property name="cacheSeconds" value="120"/>  
    </bean>
    <!-- spring mvc验证结束 -->

同时在classpath下建立validatemessages.properties,编码一定是utf-8

若有中文,先在别的文档里写好,再粘贴进去,自动转成unicode编码。同时在配置文件里也可以用{}获取一些简单的属性,比如min、max,

testvo.name={min}\u54C8{max}\u54C8haha
testvo.age=heihei

若要看更详细的文档请点击http://docs.jboss.org/hibernate/validator/4.3/reference/en-US/html/validator-usingvalidator.html

时间: 2024-08-29 09:41:23

springmvc4的validation配置的相关文章

【1】springmvc4 + servlet3 零配置全注解入门项目helloword

自从servlet3.0支持注解,使得javaweb项目使用全注解成为可能. 注解化将成为javaweb的发展方向.包括spring去年推出的spring-boot也是全部使用注解. 代码:https://github.com/heikehuan/learning-technology-code/tree/master/springmvc-annotation-web

springmvc4.0配置ajax请求json格式数据

1.导入相关jar包:jackson-annotation-2.5.4.jar,jackson-core-2.5.4.jar,jackson-databind-2.5.4.jar. 2.spring-servlet.xml中相关配置: //命名空间加入mvc: xmlns:mvc="http://www.springframework.org/schema/mvc" //xsi:schemaLocation中补充: http://www.springframework.org/sche

几个有用的eclipse配置

1.preferences>general>workspace>gbk改为utg-8 2.preferences>general>editors>file association >html/htm>设定默认打开工具 3.preferences>general>apperance>颜色和字体(colors and fonts)>basic>text font(consolas) 4.打开preferences>搜索for配

Springmvc4 com/fasterxml/jackson/core/JsonProcessingException

非常感谢: 谭卓博客 springmvc4 json springmvc4 集成hibernate4 出现 NoClassDefFoundError:com/fasterxml/jackson/core/JsonProcessingException springmvc4 JSON 的配置发生了变化: 1 <bean 2 class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter&

spring MVC4 配置详解(个人记录)

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/sch

Web上下文配置【MvcConfig】

基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论. 项目说明如下: 1.db.sql是项目中用到的表,数据库使用的是oracle11g 2.该项目使用mvn进行管理,私服为自搭建nexus,项目只用到一个第三方 jar,就是oracle的驱动: 3.默认项目为零配置启动,如果需要更改启动方式,请作如下操作: <1.使用xml风格测试时,需要先将/src/main/java/web/config下的全部类移动到项目外,并开启web.x

Spring学习之旅(七)基于XML配置与基于AspectJ注解配置的AOP编程比较

本篇博文用一个稍复杂点的案例来对比一下基于XML配置与基于AspectJ注解配置的AOP编程的不同. 相关引入包等Spring  AOP编程准备,请参考小编的其他博文,这里不再赘述. 案例要求: 写一个简单的实现四则运算的计算器. 加入AOP功能:日志功能:检测参数中是否有负数的功能. 废话不多说了,直接上代码: (一)基于XML配置: 定义了一个接口类: package com.edu.aop; public interface ArithmeticCalculator { int add(i

springMVC引入Validation详解

本文简单介绍如何引入validation的步骤,如何通过自定义validation减少代码量,提高生产力.特别提及:非基本类型属性的valid,GET方法的处理,validation错误信息的统一resolve. 本文中validation的实际实现委托给Hibernate validation处理 基本配置 pom引入maven依赖 <!-- validation begin --> <dependency> <groupId>javax.validation<

SpringMVC中实现Bean Validation(JSR 303 JSR 349 JSR 380)

JSR 303是针对bean数据校验提出的一个规范.使用注解方式实现数据校验. 每个注解的用法这里就不多介绍,请移步JSR 303 - Bean Validation 介绍及最佳实践 笔者上面提到的JSR303是专家组成员向JCP提交的第一版Bean Validation, 主流Bean Validation使用Hibernate的实现,本文使用hibernate-validator 各个版本的规范对应关系如下: JSR 380 (Bean Validation 2.0) JSR 349 (Be