SpSpringMVC数据验证

合集下载

黑马程序员springmvc教程第二天:springmvc校验

黑马程序员springmvc教程第二天:springmvc校验

springmvc校验校验理解项目中,通常使用较多是前端的校验,比如页面中js校验。

对于安全要求较高点建议在服务端进行校验。

服务端校验:控制层conroller:校验页面请求的参数的合法性。

在服务端控制层conroller 校验,不区分客户端类型(浏览器、手机客户端、远程调用)业务层service(使用较多):主要校验关键业务参数,仅限于service接口中使用的参数。

持久层dao:一般是不校验的。

springmvc校验需求springmvc使用hibernate的校验框架validation(和hibernate没有任何关系)。

校验思路:页面提交请求的参数,请求到controller方法中,使用validation进行校验。

如果校验出错,将错误信息展示到页面。

具体需求:商品修改,添加校验(校验商品名称长度,生产日期的非空校验),如果校验出错,在商品修改页面显示错误信息。

环境准备hibernate的校验框架validation所需要jar包:配置校验器校验器注入到处理器适配器中在pojo中添加校验规则在ItemsCustom.java中添加校验规则:CustomValidationMessages.propert ies在CustomValidationMessages.properties配置校验错误信息:捕获校验错误信息//在需要校验的pojo前边添加@Validated,在需要校验的pojo后边添加BindingResult bindingResult接收校验出错信息//注意:@Validated和BindingResult bindingResult是配对出现,并且形参顺序是固定的(一前一后)。

在页面显示校验错误信息在controller中将错误信息传到页面即可。

页面显示错误信息:分组校验需求在pojo中定义校验规则,而pojo是被多个 controller所共用,当不同的controller方法对同一个pojo进行校验,但是每个controller方法需要不同的校验。

MVC数据验证详解

MVC数据验证详解

MVC数据验证详解⼀、⼀般情况对于使⽤过MVC框架的⼈来说,对MVC的数据验证不会陌⽣,⽐如,我有⼀个Model如下:public class UserInfo{[Required(ErrorMessage = "UserName不可为空1111")]public string UserName { get; set; }public string Sex { get; set; }public string Mobile { get; set; }public string Address { get; set; }}前端:@using (Html.BeginForm()){@Html.AntiForgeryToken()<div class="form-horizontal"><h4>UserInfo</h4><hr />@Html.ValidationSummary(true, "", new { @class = "text-danger" })<div class="form-group">@belFor(model => erName, htmlAttributes: new { @class = "control-label col-md-2" })<div class="col-md-10">@Html.EditorFor(model => erName, new { htmlAttributes = new { @class = "form-control" } })@Html.ValidationMessageFor(model => erName, "", new { @class = "text-danger" })</div></div><div class="form-group">@belFor(model => model.Sex, htmlAttributes: new { @class = "control-label col-md-2" })<div class="col-md-10">@Html.EditorFor(model => model.Sex, new { htmlAttributes = new { @class = "form-control" } })@Html.ValidationMessageFor(model => model.Sex, "", new { @class = "text-danger" })</div></div><div class="form-group">@belFor(model => model.Mobile, htmlAttributes: new { @class = "control-label col-md-2" })<div class="col-md-10">@Html.EditorFor(model => model.Mobile, new { htmlAttributes = new { @class = "form-control" } })@Html.ValidationMessageFor(model => model.Mobile, "", new { @class = "text-danger" })</div></div><div class="form-group">@belFor(model => model.Address, htmlAttributes: new { @class = "control-label col-md-2" })<div class="col-md-10">@Html.EditorFor(model => model.Address, new { htmlAttributes = new { @class = "form-control" } })@Html.ValidationMessageFor(model => model.Address, "", new { @class = "text-danger" })</div></div><div class="form-group"><div class="col-md-offset-2 col-md-10"><input type="submit" value="Create" class="btn btn-default" /></div></div></div>}效果:是的,MVC可以通过对⼀些属性添加⼀定的特性来对数据进⾏验证。

ASP.NETMVC数据验证及相关内容

ASP.NETMVC数据验证及相关内容

MVC数据验证及相关内容⼀、数据验证数据验证的步骤在模型类中添加与验证相关的特性标记在客户端导⼊与验证相关的js⽂件和css⽂件使⽤与验证相关的Html辅助⽅法在服务器端判断是否通过服务器端验证常⽤的验证标记 Required:⾮空验证StringLength:验证字符串的长度RegularExpression:正则表达式验证Compare:⽐较两个字段的值是否相等Range:范围验证Remote:服务器验证(需要在controller中编写返回值为JsonResult的Action)⾃定义验证标记与验证相关的js⽂件在 MVC中提供了2套验证框架,分别是微软验证框架和jquery验证框架.默认启⽤了jquery验证框架.注意:这些js⽂件的顺序不能颠倒;其中Site.css⽂件中定义了数据验证使⽤的样式.验证相关的Html辅助⽅法注意:1.必须使⽤Html.ValidationMessage()和Html.ValidationMessageFor()来显⽰验证失效的提⽰信息;2.被验证的控件(如⽂本框\下拉列表框等)必须使⽤Html辅助⽅法⽣成才有效.在服务器端判断模型是否通过了验证(服务器端验证)页⾯中如果使⽤了MVC验证功能,那么在后台对应的Action中必须通过ModelState.IsValid判断是否通过了服务器端验证。

只有通过了服务器端验证,才能执⾏其他的业务逻辑代码使⽤要点:被验证的标记不能是纯html,必须使⽤相应的html辅助⽅法例如:Html.TextBoxFor(model=>erName),则验证有效;<input type=”text” id=”UserName” name=”UserName” />,则验证⽆效;必须使⽤相应的html辅助⽅法显⽰验证消息(Html.ValidationMessage)被验证的控件必须放在有html.beginform的辅助⽅法内部(不能是纯<form>标记).客户端验证是不安全的,容易被禁⽤或欺骗,所以⼀定要在服务器端判断ModelState.IsValid是否为true.Action与View的数据传递在某些情况下,视图需要显⽰多份数据(⽐如被修改的员⼯信息\岗位列表\部门列表),但是Action在返回视图时,View()⽅法只能传递1个object类型的数据,那么其他的数据该如何传递? MVC为我们提供了3种⽅案:ViewData\TempData\ViewBag.重要提⽰:在Controller和View中都有这三个属性,在Controller的相应属性中存放了数据后,就可以在View的相应属性中提取这些数据。

mvc下的四种验证编程方式

mvc下的四种验证编程方式

mvc下的四种验证编程方式在MVC(Model-View-Controller)架构中,验证通常在Model层进行。

以下是四种常见的验证编程方式:1. 数据注解验证(Data Annotation Validation):这是 MVC中内置的验证方式。

通过在模型类中使用数据注解特性,可以定义验证规则。

例如,使用`[Required]`、`[StringLength(特定长度)]`等特性来定义验证规则。

```csharppublic class UserModel{[Required]public string Username { get; set; }[StringLength(100)]public string Password { get; set; }}```2. ModelState验证:在Controller中,可以使用`ModelState`对象来检查模型的状态,包括验证状态。

如果模型不满足验证规则,可以通过``属性检查出来。

```csharp[HttpPost]public ActionResult Create(UserModel model){if (){// 模型验证通过,进行保存操作}else{// 模型验证失败,返回视图并显示错误信息return View(model);}}```3. 自定义验证逻辑:可以在Model中实现自定义的验证方法或特性,用于处理特定或复杂的验证逻辑。

```csharppublic class CustomValidator : ValidationAttribute{public override bool IsValid(object value){// 自定义验证逻辑return true; // 或 false,根据验证结果返回}}```4. 客户端验证(Client-Side Validation):除了服务器端验证外,还可以使用JavaScript或jQuery等客户端脚本进行前端验证,以提高用户体验。

Asp.netmvc基础(十一)数据验证

Asp.netmvc基础(十一)数据验证

mvc基础(⼗⼀)数据验证
1.获取验证失败错误
mvc会⾃动根据属性的类型进⾏基本的校验,但 mvc并不是在请求验证失败的时候抛异常,⽽是把决定权交给开发⼈员,开发⼈员需要决定如何处理数据校验失败。

在Action⽅法中可以通过ModelState.IsValid判断是否验证通过。

在使⽤ModelState.IsValid的判断中,我们只能知道有属性没有验证通过,不知道哪个属性验证失败。

因此可以通过封装⼀个⽅法进⾏获取验证失败的详细信息
2.常⽤验证Attribute
(1)[Required] 这个属性是必须的
(2)[StringLength(100)] 字符串最⼤长度100,其中:[StringLength(100,MinimumLength)=10] 字符串最⼤长度100,最⼩长度10
(3)[RegularExpression(@"aa(\d)+bb")] 正则表达式
(4)[Range(最⼩值,最⼤值)] 取值范围
(5)[Commpare("要⽐较的属性")] 这个属性必须和要⽐较的属性值⼀样
(6)[EmailAddress] 邮箱地址
(7)[Phone] 电话号码
3.⾃定义验证
⽅法⼀:(只需要定义正则表达式)
封装⼀个类,继承RegularExpressionAttribute类
将封装的类添加到属性上
⽅法⼆:(根据正则表达式⽆法解决)
直接继承⾃ValidationAttribute,重写IsValid⽅法。

SpringMVC中Controller使用Validation的参数校验和统一处理参数异常

SpringMVC中Controller使用Validation的参数校验和统一处理参数异常

SpringMVC中Controller使⽤Validation的参数校验和统⼀处理参数异常Spring Validation提供⼀些很⽅便的校验功能,最近项⽬中正好使⽤,整理总结⼀下。

依赖的jar包, 其他spring需要的jar包我就不写了,需要的可以下载后⾯的demo看看。

1<dependency>2<groupId>org.hibernate</groupId>3<artifactId>hibernate-validator</artifactId>4<version>5.4.1.Final</version>5</dependency>hibernate-validator配置validator的可以看到,校验功能提供的类是org.hibernate.validator.HibernateValidator,被封装在了spring的校验⼯⼚类中。

messageSource可以使⽤也可以不⽤,下⾯会讲到。

如果有⾃⼰的json转换类可以在 annotation-driven标签中配置,简单起见此处是⽤默认的。

1<mvc:annotation-driven validator="validator"/>2<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">3<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>4<!-- 如果不加默认到使⽤classpath下的 ValidationMessages.properties -->5<property name="validationMessageSource" ref="messageSource"/>6</bean>78<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">9<property name="basenames" value="classpath:messages"/>10<property name="defaultEncoding" value="UTF-8"/>11<property name="cacheSeconds" value="60"/>12</bean>View Code利⽤springAOP功能,定义统⼀的异处理类。

SpringMVC注解校验

SpringMVC注解校验spring注解式参数校验版权声明:本⽂为博主原创⽂章,未经博主允许不得转载。

https:///jinzhencs/article/details/51682830⼀般⼊参我们都会转为vo对象。

那么直接在对象的属性上注解即可。

其实spring⽤的是hibernate的validator.步骤1.配置spring.xml<mvc:annotation-driven />2.配置⾃⼰的validate类。

<bean id="validateArgsAOP" class="com.my.validate.aop.ValidateArgsAOP"/><aop:config><aop:aspect id="argAOP" ref="validateArgsAOP"><aop:pointcut id="target" expression="execution(* com.wlqq.apigateway..*Controller.*(..))"/><aop:around method="doAround" pointcut-ref="target"/></aop:aspect></aop:config>3.controller的bean加上@Valid@RequestMapping(value=”/template”, method = RequestMethod.POST)@ResponseBodypublic JSONObject create(@RequestBody @Valid User json) {}4.bean上加注解验证@NotBlankprivate String name;5.⾃定义全局异常捕获异常因为我⾃定义的validator类校验缺少参数直接抛出异常,所以需要⾃定义全局异常捕获到这个异常,然后返回给前端:缺少必要参数。

Spring注解验证-关于@Valid

Spring注解验证-关于@Valid在我们做spring mvc项⽬的时候,经常要对Controller中传⼊实体内容进⾏验证,费时还费⼒,SO,spring mvc 验证参数注解@Valid注解,更⽅便了我们专注于业务的处理官⽅参考地址,⼤家clone下来的时候记得改下地址(附上阿⾥⼤法地址)repositories {maven{url "/nexus/content/groups/public/"}}官⽅⽂档 http://spring.io/guides/gs/validating-form-input/⼤家主要看PersonForm类,模版⾥提供的类中多了3个注解,其中@NotNull 是针对下⾯的参数不能为空,如果为空,会抛出 javax.validation.constraints.NotNull.message⽽@Size 很容易理解,就是参数⼤⼩,/*** @return size the element must be higher or equal to*/int min() default 0;/*** @return size the element must be lower or equal to*/int max() default Integer.MAX_VALUE;⾥⾯有min() 和max()在我们的controller中,要验证的实体记得⼀定要加@Valid 使我们的注解⽣效在验证我们的参数的时候,如果不加 BindingResult bindingResult会抛出异常,我们可以根据 BindingResult 来处理我们的提⽰错误等很容易上⼿,@Null 限制只能为null@NotNull 限制必须不为null@AssertFalse 限制必须为false@AssertTrue 限制必须为true@DecimalMax(value) 限制必须为⼀个不⼤于指定值的数字@DecimalMin(value) 限制必须为⼀个不⼩于指定值的数字@Digits(integer,fraction) 限制必须为⼀个⼩数,且整数部分的位数不能超过integer,⼩数部分的位数不能超过fraction @Future 限制必须是⼀个将来的⽇期@Max(value) 限制必须为⼀个不⼤于指定值的数字@Min(value) 限制必须为⼀个不⼩于指定值的数字@Past 限制必须是⼀个过去的⽇期@Pattern(value) 限制必须符合指定的正则表达式@Size(max,min) 限制字符长度必须在min到max之间这是 javax.validation 包下的,⼤家还要注意的是我们还可以⽤到Hibernate下的验证@NotBlank(message =) 验证字符串⾮null,且长度必须⼤于0 很适合String 参数验证@Email 被注释的元素必须是电⼦邮箱地址@Length(min=,max=) 被注释的字符串的⼤⼩必须在指定的范围内@NotEmpty 被注释的字符串的必须⾮空@Range(min=,max=,message=) 被注释的元素必须在合适的范围内。

SpringMVC数据校验方法(必看篇)

SpringMVC数据校验⽅法(必看篇)数据校验在web应⽤⾥是⾮常重要的功能,尤其是在表单输⼊中。

在这⾥采⽤Hibernate-Vapdator进⾏校验,该⽅法实现了JSR-303验证框架⽀持注解风格的验证。

⼀、导⼊jar包若要实现数据校验功能,需要导⼊必要的jar包,主要包括以下⼏个:classmate-1.3.1.jarhibernate-vapdator-5.4.1.Final.jarhibernate-vapdator-annotation-processor-5.4.1.Final.jarhibernate-vapdator-cdi-5.4.1.Final.jarjboss-logging-3.3.0.Final.jarvapdation-api-1.1.0.Final.jar⼆、常⽤的校验注解注解功能@Null验证对象是否为 null@NotNull验证对象是否不为 null@AssertTrue验证 Boolean 对象是否为 true@AssertTrue验证 Boolean 对象是否为 false@Max(value)验证 Number 和 String 对象是否⼩于等于指定值@Min(value)验证 Number 和 String 对象是否⼤于等于指定值@DecimalMax(value)验证注解的元素值⼩于等于 @DecimalMax 指定的 value 值@DecimalMin(value)验证注解的元素值⼤于等于 @DecimalMin 指定的 value 值@Digits(integer,fraction)验证字符串是否符合指定格式的数字,integer 指定整数精度,fraction 指定⼩数精度@Size(min,max)验证对象长度是否在给定的范围内@Past验证 Date 和 Calendar 对象是否在当前时间之前@Future验证 Date 和 Calendar 对象是否在当前时间之后@Pattern验证 String 对象是否符合正则表达式的规则@NotBlank检查字符串是不是 Null,被 Trim 的长度是否⼤于0,只对字符串,且会去掉前后空格@URL验证是否是合法的 url@Email验证是否是合法的邮箱@CreditCardNumber验证是否是合法的信⽤卡号@Length(min,max)验证字符串的长度必须在指定范围内@NotEmpty检查元素是否为 Null 或 Empty@Range(min,max,message)验证属性值必须在合适的范围内三、修改实体类在类的属性上进⾏标注,如:public class User {@NotBlank(message = "Username can not be empty")private String username;@NotBlank(message = "password can not be blank")@Length(min = 6, max = 16, message = "The length of the password must be between 6 and 16 bits")private String password;@Range(min = 18, max = 60, message = "Age must be between 18 and 60 years old")private Integer age;@Pattern(regexp = "^1[3|4|5|7|8][0-9]{9}$", message = "Please enter the correct format of the phone number")private String phone;@Email(message = "Please enter a valid email address")private String email;// other...}四、修改相应的处理⽅法@RequestMapping(value = "/register")public String register(@Valid @ModelAttribute("user") User user, Errors errors,Model model) {if(errors.hasErrors()){return "register";}model.addAttribute("user", user);return "success";}五、视图输出校验之后,我们通常需要在表单的输⼊框后进⾏⽂字反馈:<form:form modelAttribute="user" method="post" action="register"><fieldset><legend>register</legend><p><label>name:</label><form:input path="username" /><form:errors path="username" cssStyle="color:red"/></p>...</fieldset></form:form>然⽽,有些时候并不推荐直接将错误信息写在注解的message属性⾥,这样不⽅便国际化。

SpringMVC中参数校验使用教程

SpringMVC 中参数校验使用教程一、环境准备在项目中添加以下依赖gradlemaven 如果是SpringBoot 项目,只需要引入web 的starter 即可,里面包含了所需依赖二、常用的校验注解及示例org.hibernate:hibernate-validator:5.3.5.Final<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.3.5.Final</version></dependency>//该参数必须为空@Null(message = "无需ID")private Integer id;//根据正则校验手机号是否是由数字组成@Pattern(regexp = "^\\d{11}$", message = "手机格式不正确,不是11位")private String telephone;//校验该对象是否为null//对于String 来说,空字符串可通过校验,所以String 应该使用@NotBlank 进行校验,此处仅做示例而已。

@NotNull(message = "联系人不能为空")private String friendName;//校验对象是否是空对象,可用于Array,Collection,Map,String@NotEmpty(message = "家庭成员不能为空")private List families;//校验长度,可以用于Array,Collection,Map,String22232425262728293031323334353637383940414243444546474849505152192021123456789101112131415161718@Size(min = 4, max = 8, message = "用户名长度错误 by size")//校验长度,只能用于String@Length(min = 4, max = 8, message = "用户名长度错误 by length")private String username;//javax校验@Max(value = 200, message = "年龄一般不会超过200 by max")@Min(value = 1, message = "年龄一般不能小于1 by min")//hibernate校验,效果等同@Range(min = 0, max = 200, message = "年龄范围在0-200之间 by range")private Integer age;//校验参数是否是False, 相反的是@AssertTrue@AssertFalse(message = "用户初始化无需冻结")private Boolean lock;//String专用@NotBlank(message = "密码不能为空")@Size(min = 6, max = 12, message = "密码长度不对")private String password;//使用自定义校验注解->校验时间@Past(message = "生日只能为以前的时间")@JsonFormat(pattern = "yyyy-MM-dd HH:mm")private Date birth;//校验Email@Email(message = "邮件地址不正确")private String email;三、校验类方法中的普通参数1. 在类上加@Validated注解2. 在参数上加上校验注解以controller层作示例如下:@Validated@RestController@RequestMapping(value = "/user")public class UserController {/*** 校验请求参数*/@GetMappingpublic String getUser(@Size(min = 5, max = 8, message = "用户名长度超出限制") String username) { return username;}}四、校验类方法中的自定义对象1. 在类上加@Validated注解(同普通参数一样都需要加)2. 在参数上加@Valid,(或者加@Validated也是可以的)@Validated@RestController@RequestMapping(value = "/user")public class UserController {/*** 校验请求中的自定义对象*/@PostMappingpublic UserDTO saveUserOuter(@RequestBody @Valid UserDTO userDTO) {return userDTO;}}3.在自定义对象中的属性上加上校验注解3.在自定义对象中的属性上加上校验注解public class UserDTO {//该参数必须为空@Null(message = "无需ID")private Integer id;//根据正则校验手机号是否是由数字组成@Pattern(regexp = "^\\d{11}$", message = "手机格式不正确,不是11位")private String telephone;//校验该对象是否为null//对于String来说,空字符串可通过校验,所以String应该使用@NotBlank进行校验,此处仅做示例而已。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SpringMVC数据验证在这里我们采用Hibernate-validator来进行验证,Hibernate-validator实现了JSR-303验证框架支持注解风格的验证。

首先我们要到/validator/下载需要的jar包,这里以4.3.1.Final作为演示,解压后把hibernate-validator-4.3.1.Final.jar、jboss-logging-3.1.0.jar、validation-api-1.0.0.GA.jar这三个包添加到项目中。

配置之前项目中的springservlet-config.xml文件,如下:复制代码<!-- 默认的注解映射的支持--><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>复制代码其中<property name="basename" value="classpath:validatemessages"/>中的classpath:validatemessages为注解验证消息所在的文件,需要我们在resources文件夹下添加。

在com.demo.web.controllers包中添加一个ValidateController.java内容如下:复制代码package com.demo.web.controllers;import java.security.NoSuchAlgorithmException;import javax.validation.Valid;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.validation.BindingResult;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import com.demo.web.models.ValidateModel;@Controller@RequestMapping(value = "/validate")public class ValidateController {@RequestMapping(value="/test", method = {RequestMethod.GET})public String test(Model model){if(!model.containsAttribute("contentModel")){model.addAttribute("contentModel", new ValidateModel());}return "validatetest";}@RequestMapping(value="/test", method = {RequestMethod.POST})public String test(Model model, @Valid @ModelAttribute("contentModel") ValidateModel validateModel, BindingResult result) throws NoSuchAlgorithmException{//如果有验证错误返回到form页面if(result.hasErrors())return test(model);return "validatesuccess";}}复制代码其中@Valid @ModelAttribute("contentModel") ValidateModel validateModel的@Valid 意思是在把数据绑定到@ModelAttribute("contentModel") 后就进行验证。

在com.demo.web.models包中添加一个ValidateModel.java内容如下:复制代码package com.demo.web.models;import org.hibernate.validator.constraints.Email;import org.hibernate.validator.constraints.NotEmpty;import org.hibernate.validator.constraints.Range;public class ValidateModel{@NotEmpty(message="{name.not.empty}")private String name;@Range(min=0, max=150,message="{age.not.inrange}")private String age;@NotEmpty(message="{email.not.empty}")@Email(message="{email.not.correct}")private String email;public void setName(String name){=name;}public void setAge(String age){this.age=age;}public void setEmail(String email){this.email=email;}public String getName(){return ;}public String getAge(){return this.age;}public String getEmail(){return this.email;}}复制代码在注解验证消息所在的文件即validatemessages.properties文件中添加以下内容:name.not.empty=\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A\u3002age.not.inrange=\u5E74\u9F84\u8D85\u51FA\u8303\u56F4\u3002email.not.correct=\u90AE\u7BB1\u5730\u5740\u4E0D\u6B63\u786E\u3002email.not.empty=\u7535\u5B50\u90AE\u4EF6\u4E0D\u80FD\u60DF\u6050\u3002其中name.not.empty等分别对应了ValidateModel.java文件中message=”xxx”中的xxx名称,后面的内容是在输入中文是自动转换的ASCII编码,当然你也可以直接把xxx写成提示内容,而不用另建一个validatemessages.properties文件再添加,但这是不正确的做法,因为这样硬编码的话就没有办法进行国际化了。

在views文件夹中添加validatetest.jsp和validatesuccess.jsp两个视图,内容分别如下:复制代码<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><%@ taglib prefix="form" uri="/tags/form" %><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><form:form modelAttribute="contentModel" method="post"><form:errors path="*"></form:errors><br/><br/>name:<form:input path="name" /><br/><form:errors path="name"></form:errors><br/>age:<form:input path="age" /><br/><form:errors path="age"></form:errors><br/>email:<form:input path="email" /><br/><form:errors path="email"></form:errors><br/><input type="submit" value="Submit" /></form:form></body></html>复制代码复制代码<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>验证成功!</body></html>复制代码其中特别要指出的是validatetest.jsp视图中<form:form modelAttribute="contentModel" method="post">的modelAttribute="xxx"后面的名称xxx必须与对应的@Valid @ModelAttribute("xxx") 中的xxx名称一致,否则模型数据和错误信息都绑定不到。

相关文档
最新文档