0 0

SpringMVC使用JSR303校验数据异常5

 

项目环境配置没有问题,JAR该导的都导了。

 

直接上源码 :

UsersController:

	@RequestMapping(value = "/add.html", method = RequestMethod.POST)
	public String doAdd(@Valid @ModelAttribute("user") TUsers user, BindingResult bindingResult) throws Exception {
		System.out.println("进入方法 ");
		System.out.println(bindingResult.getErrorCount() + "   这个 是错误 统计 ");
		if (bindingResult.hasErrors()) {
			System.out.println("有错误 ");
			String code = bindingResult.getFieldError().getCode();// 验证出错的那个类型名称
			// 比如NotEmpty
			System.out.println(bindingResult.getFieldError().getDefaultMessage() + "  出错的信息  ");// 出错的信息
			System.out.println(bindingResult.getFieldErrors().size() + "   size");
			return "back/user/user_add";
		}
		System.out.println("校验通过  ");
		usersService.doCreate(user);
		return "redirect:/user/findAll.html";
	}

 

TUsers.java

 

	private Integer id; 
	@Length(min = 2)
	private String username; 
	private String name; 
	@NotNull
	private String password;
	private String role;
	private Date logintime;

 

 

 

配置文件:

spring3-servlet.xml

<?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:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation=" 
           http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
           http://www.springframework.org/schema/context 
           http://www.springframework.org/schema/context/spring-context-3.2.xsd
           http://www.springframework.org/schema/mvc 
           http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
           "
	default-autowire="byName">
	<!-- 默认采用byName方式进行Bean的注入  -->

	<!--
		配置静态资源,这里表示为:把/images/的所有文件路径映射为/images/,因为在web.xml中已经把拦截路径配置为/,所以静态资源也被拦截。
	-->
	<mvc:resources mapping="/images/**" location="/images/" />
	<mvc:resources mapping="/js/**" location="/js/" />
	<mvc:resources mapping="/css/**" location="/css/" />
	
	<!--
		Ajax乱码解决开始、需要把bean部分加入到<context:component-scan base-package="" />前面,
		这样就可以在jquery中直接调用而不出现乱码了。
	-->
	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
		<property name="messageConverters">
			<list>
				<ref bean="stringHttpMessageConverter" />
			</list>
		</property>
	</bean>
	<bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter">
		<property name="supportedMediaTypes">
			<list>
				<value>text/plain;charset=UTF-8</value>
			</list>
		</property>
	</bean>
	<!--Ajax乱码解决结束、-->




	<!-- 扫描所有的controller (这里只要扫描controller就可以了,不要扫描真实类和业务类)-->
	<context:component-scan base-package="org.yzsoft.springmvc.web" />

	<!-- 处理在类级别上的@RequestMapping注解-->
	<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
	<!-- 处理方法级别上的@RequestMapping注解-->
	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
	
	
	 	<!-- 以下 validator  ConversionService 在使用 mvc:annotation-driven 会 自动注册-->
    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass"  value="org.hibernate.validator.HibernateValidator"/>
        <!-- 如果不加默认到 使用classpath下的 ValidationMessages.properties -->
        
    </bean>
	
	<!-- 默认的注解映射的支持 -->
<!--	<mvc:annotation-driven/> -->
	 <mvc:annotation-driven validator="globalValidator"/>
	   <!-- spring供给的bean validator接口设备  -->
	<bean id="globalValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
		<property name="providerClass"  value="org.hibernate.validator.HibernateValidator"/>
        <property name="validationMessageSource" ref="messageSource"/>
	</bean>
	<!-- 国际化消息设备 -->
	<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
		<property name="defaultEncoding" value="UTF-8"></property>
		<property name="basenames">
			<list>
				<value>classpath:ValidationMessages.properties</value>
			</list>
		</property>
	</bean>
	
	<!--
		配置一个基于注解的定制的WebBindingInitializer,解决日期转换问题,方法级别的处理器映射, 有人说该bean要放在context:component-scan前面,要不然不起作用,但我试的放后面也可以啊。
	-->
	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="webBindingInitializer">
			<bean class="org.yzsoft.springmvc.util.MyWebBinding" />
		</property>
	</bean>
	
	
	<!--
		InternalResourceViewResolver默认的就是JstlView所以这里就不用配置viewClass了,prefix为前缀,
		suffix为后缀,例如控制器返回的视图名为success,到这里时将被映射成/success.jsp
	-->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>
	
	<!-- 上传拦截,如最大上传值及最小上传值 ,如果用到文件上传这个一定要加,不然会报400异常-->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 上传最大尺寸 (单位 :字节) -->
		<property name="maxUploadSize" value="1000000000" />
	</bean>





	<!-- 启用基于注解的处理器映射,添加拦截器,类级别的处理器映射 -->
	<!--
		<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <list> <bean
		class="org.yzsoft.springmvcdemo.util.MyHandlerInterceptor" /> </list> </property> </bean>
	-->
 

</beans> 

 

 

如果数据格式校验通过没有问题,如果不符合格式,则会直接抛出异常:



 

 

 

希望有经验的各位大哥给个建议。谢谢~~

 

 

 

 

  • 大小: 400.2 KB

2个答案 按时间排序 按投票排序

0 0

可下载
http://jinnianshilongnian.iteye.com/blog/1423971
直接修改使用

2013年3月23日 11:05
0 0

觉得你里面的内容有的没必要重复写
<!-- 处理在类级别上的@RequestMapping注解--> 
    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> 
    <!-- 处理方法级别上的@RequestMapping注解--> 
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> 

默认 <mvc:annotation-driven/> 就实现了上面的功能
你可以把
<mvc:annotation-driven validator="globalValidator"/> 
       <!-- spring供给的bean validator接口设备  --> 
    <bean id="globalValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> 
        <property name="providerClass"  value="org.hibernate.validator.HibernateValidator"/> 
        <property name="validationMessageSource" ref="messageSource"/> 
    </bean> 
去掉保留<mvc:annotation-driven/>
因为jsr303默认就是使用org.hibernate.validator.HibernateValidator

2013年3月14日 11:36

相关推荐

    SpringMVC JSR303数据校验DEMO(附:JSR303的JAR包)

    当用户提交数据时,SpringMVC会自动调用JSR303验证器,如果输入不符合预设规则,系统将抛出异常并返回错误信息。 JSR303的JAR包通常包含了核心验证API(javax.validation.*)和实现,如Hibernate Validator,它是...

    SpringMVC 使用JSR-303进行校验 @Valid示例

    使用SpringMVC结合JSR-303进行数据校验的流程一般包括以下几个步骤: 1. 准备校验时使用的JAR包:在项目中添加validation-api和具体的实现库(如hibernate-validator),用于执行校验规则。 2. 编写需要校验的Java...

    SpringMVC使用JSR-303进行验证Bean.docx

    SpringMVC框架结合JSR-303(也称为JSR-349,Java Bean Validation)规范提供了一种优雅的方式来处理数据验证。本篇文章将详细介绍如何在SpringMVC中使用JSR-303进行Bean验证。 首先,我们需要引入JSR-303的实现库。...

    springmvc使用JSR-303进行数据校验实例

    接下来,我们会详细讲解如何在SpringMVC项目中集成JSR-303进行数据校验。 首先,我们来看如何集成JSR-303到SpringMVC项目中。一般情况下,集成过程涉及以下步骤: 1. 添加依赖:需要添加JSR-303规范的API包以及...

    SpringMVC杂记(五) JSR303数据验证

    在本篇《SpringMVC杂记(五) JSR303数据验证》中,我们将深入探讨SpringMVC框架如何集成并使用JSR303(JavaBeans Validation)来进行数据验证,这是一种强大的验证机制,可以确保应用程序接收到的数据是合法且符合...

    ( SpringMVC 数据的格式化、JSR 303数据校验和国际化 实例.zip

    SpringMVC 数据的格式化、JSR 303数据校验和国际化 实例.zip 对应博客:http://blog.csdn.net/peng_hong_fu/article/details/53559773

    JSR303校验一些常用的规则

    JSR303校验一些常用的规则

    JSR303jar包 使用的是Hibernate

    总的来说,JSR303和Hibernate Validator为Java开发带来了标准化的数据验证解决方案,它们与SpringMVC的整合使得Web应用的数据校验变得更加简洁、高效。在实际开发中,正确理解和使用这些工具,能够有效地提升应用的...

    jsr303jar包.zip

    JSR303用到的jar包,本人使用的,现分享给大家,希望能给大家带来帮助 classmate-0.8.0.jar hibernate-validator-5.0.0.CR2.jar hibernate-validator-annotation-processor-5.0.0.CR2.jar jboss-logging-3.1.1...

    springMVC3.2实现后台校验

    Spring MVC 3.2已经内建了对JSR 303的支持,因此我们可以方便地使用预定义的校验注解,如`@NotNull`, `@Min`, `@Max`, `@Size`等。 以下是一些常见的校验注解及其用法: 1. `@NotNull`: 检查字段是否为非空。 2. `...

    JSR303数据效验.rar

    Spring MVC 数据效验 jar包 :classmate-1.1.0.jar,hibernate-validator-5.2.4.Final.jar,hibernate-validator-annotation-processor-5.2.4.Final.jar,hibernate-validator-cdi-5.2.4.Final.jar,jboss-logging-3.2.1....

    springmvc数据验证

    Spring MVC 提供了两种主要的数据验证方式:一种是基于JSR 303/349的Bean Validation,另一种是基于Validator接口的自定义验证。 1. **Bean Validation**:这是一个标准的Java Bean数据验证框架,它定义了一组注解...

    springMVC数据校验.zip

    SpringMVC JSR 数据校验完整jar包下载,一共六个jar包,classmate-1.0.0.jar,hibernate-validator-5.0.0.final.jar,hibernate-validator-annotation-processor-5.0.1.final.jar,hibernate-validator-cdi-5.0.0....

    大三(二)springmvc数据校验.zip

    在本资料包 "大三(二)springmvc数据校验.zip" 中,我们主要探讨的是 Spring MVC 中的数据校验机制。 在 Spring MVC 中,数据校验是非常重要的一环,它确保了从客户端提交到服务器的数据是准确无误的。数据校验...

    Java实训教程 Java软件开发实战 Java开发框架介绍 SpringMVC_6_数据校验 共26页.pptx

    **JSR 303数据校验示例:** ```java @Entity @Table(name = "user_info", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_name"})}) public class UserInfo { @Id @GeneratedValue(generator = ...

    springmvc表单验证JSR-303验证框架jar包

    hibernate-validator-5.2.4.Final.jar hibernate-validator-annotation-processor-5.2.4.Final.jar hibernate-validator-cdi-5.2.4.Final.jar validation-api-1.1.0.Final.jar jboss-logging-3.2.1.Final.jar ...

    SpringMVC入门很简单之数据验证

    SpringMVC提供了多种方式进行数据验证,包括使用JSR-303/JSR-349(Bean Validation)标准以及自定义验证注解。 1. **使用JSR-303/JSR-349 (Bean Validation)** Bean Validation 提供了一种统一的验证API,允许在...

    SSM笔记-SpringMVC的数据格式化 、数据校验、错误提示、错误信息国际化、返回json

    SpringMVC支持JSR-303/JSR-349标准的数据校验框架,如Hibernate Validator。通过在模型类的字段上添加验证注解(如`@NotNull`, `@Size`, `@Min`, `@Max`等),可以对用户提交的数据进行校验。在控制器中,使用`@...

    Spring验证器+JSR303.rar

    使用SpringMVC的验证器完成货物入库输入校验。验证入库时间,以及商品价格是否合理等。主要用到的JSR303中:@Past:验证Date和Calender对象是否在当前时间之前。@Pattern:验证String对象是否符合正则表达式的规则。

    springmvc 使用hibernate-validator校验包

    在Java Web开发中,Spring MVC和Hibernate Validator是两个非常重要的组件。Spring MVC是Spring框架的一部分,主要...在实际项目中,合理使用这些工具可以大大减少因数据异常导致的问题,提高系统的稳定性和可维护性。

Global site tag (gtag.js) - Google Analytics