文档章节

springmvc4的validation配置

尚浩宇
 尚浩宇
发布于 2015/11/03 13:52
字数 668
阅读 7765
收藏 2

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

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

首先上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

© 著作权归作者所有

尚浩宇

尚浩宇

粉丝 70
博文 151
码字总数 126696
作品 4
朝阳
程序员
私信 提问
dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(六)Spring中Redis的缓存的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/54174622 前面已经写了四篇关于dubbo2.5-spring4-mybastis3.2-springmvc4-mongo...

请叫我东子
01/05
0
0
Mybatis3+Spring4+SpringMVC4 整合

首先在整合这个框架的时候,想想其一般的步骤是怎样的,先有个步骤之后,不至于在后面的搞混了,这样在整合的时候也比较清晰些。 然后我们就细细的一步一步来整合。 1 创建一个Web项目。 2 ...

陈嘻嘻哈哈
2016/03/01
0
0
菜鸟求问:springmvc 不能进入 Controller,No mapping found for HTTP request with URI

Did not find handler method for [/springmvc4/hello.action]] web.servlet.PageNotFound No mapping found for HTTP request with URI [/springmvc4/hello.action] in DispatcherServlet w......

燦若煙火
2018/08/16
1K
3
springmvc请求异常,求助

springmvc4 请求时报错: java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I 这是什么原因,我引入servlet包了...

jack_jones
2014/09/29
738
3
SpringMVC4 + Spring Data JPA + SpringSecurity

http://www.codingpedia.org/sivalabs/springmvc4-spring-data-jpa-springsecurity-configuration-using-javaconfig/...

perfectspr
2014/11/26
171
0

没有更多内容

加载失败,请刷新页面

加载更多

UAVStack功能上新:新增JVM监控分析工具

UAVStack推出的JVM监控分析工具提供基于页面的展现方式,以图形化的方式展示采集到的监控数据;同时提供JVM基本参数获取、内存dump、线程分析、内存分配采样和热点方法分析等功能。 引言 作为...

宜信技术学院
11分钟前
1
0
MySQL的5种时间类型的比较

日期时间类型 占用空间 日期格式 最小值 最大值 零值表示 DATETIME 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 9999-12-31 23:59:59 0000-00-00 00:00:00 TIMESTAMP 4 bytes YYYY-MM......

物种起源-达尔文
18分钟前
3
0
云服务OpenAPI的7大挑战,架构师如何应对?

阿里妹导读:API 是模块或者子系统之间交互的接口定义。好的系统架构离不开好的 API 设计,而一个设计不够完善的 API 则注定会导致系统的后续发展和维护非常困难。比较好的API设计样板可以参...

阿里云官方博客
21分钟前
1
0
Rancher + VMware PKS实现全球数百站点的边缘K8S集群管理

Sovereign Systems是一家成立于2007年的技术咨询公司,帮助客户将传统数据中心技术和应用程序转换为更高效的、基于云的技术平台,以更好地应对业务挑战。曾连续3年提名CRN,并且在2012年到2...

RancherLabs
26分钟前
2
0
6、根据坐标,判断该坐标是否在地图区域范围内

最近在写配送区域相关的代码,具体需求如下: 根据腾讯地图划分配送区域,总站下边设多个配送分站,然后将订单中的收货地址将其分配给不同的配送分站。 1、地图区域划分(腾讯地图) 1.1、H...

有一个小阿飞
27分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部