zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Spring MVC Hibernate-Validator数据验证实例

2023-06-13 09:12:00 时间
创建 springMVCDemo09 应用,该应用实现的功能与《Spring MVC验证器应用实例》节中的 springMVCDemo08 应用相同。springMVCDemo09 所需的 JAR 包如图 1 所示。

springMVCDemo09的JAR包
图 1 springMVCDemo09的JAR包

在 springMVCDemo09 应用中不需要创建验证器类 GoodsValidator。另外,Service 层、View 层以及错误消息属性文件都与 springMVCDemo08 应用的相同。与 springMVCDemo08 应用的实现不同的是模型类、控制器类和 Spring MVC 的核心配置文件,具体如下:

1)模型类

在模型类 Goods 中利用 JSR 303 的标注类型对属性进行验证,具体代码如下:


public class Goods {

 //goods.gname.required错误消息 key(国际化后对应的就是国际化的信息)

 @NotBlank(message= {goods.gname.required} )

 private String gname;

 @NotBlank(message= {goods.gdesciption.required} )

 private String gdescription;

 @Range(min=0,max=100,message= {gprice.invalid} )

 private double gprice;

 // 日期格式化(需要在配置文件中配置FormattingConversionServiceFactoryBean)

 @DateTimeFormat(pattern = yyyy-MM-dd )

 @Past(message= {gdate.invalid} )

 private Date gdate;

 //省略setter和getter方法

}

2)控制器类

在控制器类 GoodsController 中使用 @Valid 对模型对象进行验证,具体代码如下:


package controller;

import javax.annotation.Resource;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.validation.BindingResult;

import org.springframework.validation.Validator;

import org.springframework.web.bind.annotation.ModelAttribute;

import org.springframework.web.bind.annotation.RequestMapping;

import pojo.Goods;

import service.GoodsService;

@Controller

@RequestMapping( /goods )

public class GoodsController {

 // 得到一个用来记录日志的对象,这样在打印信息的时候能够标记打印的是哪个类的信息

 private static final Log logger = LogFactory.getLog(GoodsController.class);

 @Autowired

 private GoodsService goodsService;

 @RequestMapping( /input )

 public String input(Model model) {

 // 如果model中没有goods属性,addGoods.jsp会抛出异常

 // 因为表单标签无法找到modelAttribute属性指定的form backing object

 model.addAttribute( goods , new Goods());

 return addGoods 

 @RequestMapping( /save )

 public String save(@ModelAttribute Goods goods, BindingResult result,Model model) {

 if (result.hasErrors()) {

 return addGoods 

 goodsService.save(goods);

 logger.info( 添加成功 

 model.addAttribute( goodsList , goodsService.getGoods());

 return goodsList 

}
3)配置文件

配置文件 springmvc-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:mvc= http://www.springframework.org/schema/mvc 

 xmlns:p= http://www.springframework.org/schema/p 

 xmlns:context= http://www.springframework.org/schema/context 

 xsi:schemaLocation= 

 http://www.springframework.org/schema/beans

 http://www.springframework.org/schema/beans/spring-beans.xsd

 http://www.springframework.org/schema/context

 http://www.springframework.org/schema/context/spring-context.xsd

 http://www.springframework.org/schema/mvc

 http://www.springframework.org/schema/mvc/spring-mvc.xsd 

 !-- 使用扫描机制扫描包 -- 

 context:component-scan base-package= controller / 

 context:component-scan base-package= service / 

 !-- 配置消息属性文件 -- 

 bean id= messageSource http://c.biancheng.net/hibernate/ target=_blank rel="noopener">HibernateValidator / 

 !-- 指定校验使用的资源文件,在文件中配置校验错误信息,如果不指定则默认使用 classpath下的 VaiidationMessages.properties -- 

 property name= validationMessageSource ref= messageSource / 

 /bean 

 !--开启 Spring的 Valid 功能 -- 

 mvc:annotation-driven conversion-service= conversionService 

 validator= validator / 

 !-- 注册格式化转换器,因为用到日期转换 -- 

 bean id= conversionService 

4)测试应用

通过地址 http://localhost:8080/springMVCDemo09/goods/input 测试 springMVCDemo09 应用。

22582.html

goHibernatehtmljavaJSPServletspringSpringMVCWeb