StringMVC 中如何做数据校验

步骤一:引入四个jar包

步骤二:注册类型转换器

复制代码
 <context:component-scan base-package="cn.happy.controller"></context:component-scan><!-- 配置验证器 --><bean id="myvalidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"><property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property></bean> <mvc:annotation-driven validator="myvalidator"/>
复制代码

步骤三:为实体类进行注解约束

复制代码
package cn.happy.entity;import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;import org.hibernate.validator.constraints.NotEmpty;
/*** @Min最小值* @Max最大值* @NotEmpty 不允许为空* @Pattern 使用正则校验* @Size 长度*/
public class UserInfo {//必须是0到100之间@Min(value=0,message="成绩最小值为{value}")@Max(value=100,message="成绩最大值为{value}")@NotEmpty(message="成绩不允许为空")  private Integer score;//手机号码必须不能为空,必须是以1 开头 第二位3,4,5,6,7,8,9   最后9位随意@NotEmpty(message="手机号码不允许为空")  @Pattern(regexp="^1[3,4,5,6,7,8,9]\\d{9}$",message="手机号码不正确")private String phone;//不能为空//必须是6个字符以上@NotEmpty(message="用户名不能为空") @Size(min=6,message="名称至少6个字符")private String name;public Integer getScore() {return score;}public void setScore(Integer score) {this.score = score;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
复制代码

步骤四:编写Handler控制器

复制代码
package cn.happy.controller;import javax.validation.Valid;import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;import cn.happy.entity.UserInfo;@Controller
public class FirstController {@RequestMapping("/first.do")public ModelAndView doFirst(@Valid UserInfo info,BindingResult br){ModelAndView mv=new ModelAndView();mv.setViewName("/WELCOME.jsp");//记录到底是哪个字段验证失败了//有一个可以侦测到验证错误总数的方法int errorCount = br.getErrorCount();if (errorCount>0) {//证明模型验证失败FieldError score = br.getFieldError("score");FieldError name = br.getFieldError("name");FieldError phone = br.getFieldError("phone");if (score!=null) {mv.addObject("scoremsg",score.getDefaultMessage());}if (name!=null) {mv.addObject("namemsg",name.getDefaultMessage());}if (phone!=null) {mv.addObject("phonemsg",phone.getDefaultMessage());}mv.setViewName("/index.jsp");}//高中  英文版的吻别return mv ;}
}
复制代码

 

转载于:https://www.cnblogs.com/baixingqiang/p/6260181.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ibm+x3650+m4+linux+raid驱动,IBM X3650M4阵列卡驱动下载

ibm X3650M4raid阵列卡驱动适合安装windowsserver2008,windowsserver2008R2,系统问题&#xff0c;服务器问题&#xff0c;可以联系我们也可以到5分享论坛发帖求助。IBM System x3650 M4服务器是一款应用最为广泛的2U机架服务器&#xff0c;支持Xeon E5-2600机架服务器的所有产品…

UML类图与类的关系详解

在画类图的时候&#xff0c;理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现&#xff08;Realization&#xff09;、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation)&#xff0c;合成关系(Composition)。下面我们…

python之路-SQLAlchemy

SQLAchemy SQLAlchemy是Python编程语言下的一款ORM框架&#xff0c;该框架建立在数据库API之上&#xff0c;使用关系对象映射进行数据库操作&#xff0c;简言之便是&#xff1a;将对象转换成SQL&#xff0c;然后使用数据API执行SQL并获取执行结果。 安装&#xff1a; pip3 inst…

Linux中vim编辑器的缩进的功能键

vim编程时,经常需要对代码进行缩进处理,以增加程序的可读性和后期的代码维护. 可以采用多种方式达到缩进的目的: 1) 命令模式(command mode) 2) Visual模式&#xff08;visual mode&#xff09; 2) 输入模式(entry mode) 3) 末行模式(last-line mode) 4) 在/etc/vimrc有给予vim…

JSF 2,PrimeFaces 3,Spring 3和Hibernate 4集成项目

本文展示了如何集成JSF2&#xff0c;PrimeFaces3&#xff0c;Spring3和Hibernate4技术。 它为Java开发人员提供了一个通用的项目模板。 另外&#xff0c;如果Spring不用于业务和数据访问层&#xff0c;则可以提供JSF – PrimeFaces和Hibernate集成项目。 二手技术&#xff1a…

初识openstack

一、 什么是openstack&#xff1f; OpenStack是一个由NASA&#xff08;美国国家航空航天局&#xff09;和Rackspace合作研发并发起的&#xff0c;以Apache许可证授权的自由软件和开放源代码项目。 二、openstack前世今身 openstack是一个跟Eucalyptus,AWS(Amazon web Service)类…

Arquillian 1.0.0.Final正式发布! 准备使用GlassFish和WebLogic! 杀死所有虫子!

红帽公司和JBoss社区今天宣布的1.0.0.Final发布的Arquillian &#xff0c;其屡获殊荣的建在Java虚拟机&#xff08;JVM&#xff09;运行测试平台。 Arquillian大大减少了编写和执行Java中间件集成和功能测试所需的工作。 它甚至使测试工程师能够解决以前认为无法测试或测试成本…

qq五笔linux,QQ五笔 - 五笔小字典 QQ绑定很实用

九、 智能调频、空码检索、词序固定在QQ五笔中还有一些小亮点&#xff0c;比如它可以根据“最近输入”、“输入次数”对候选词排序。同时为了加快检索速度&#xff0c;默认只在常用字库(GB2312)中检索&#xff0c;只有出现空码后才会继续搜索容量更大的GBK字库&#xff0c;很好…

android 关闭蓝牙打电话功能,Android蓝牙开发【八】hfp接听、挂断电话

继续研究hfp相关功能。蓝牙耳机可以控制手机接听、拒接、挂断电话&#xff0c;拨打电话等功能。本文主要分析下起这些操作的大致流程。在系统应用Bluetooth中com_android_bluetooth.cpp提供了多个回调方法&#xff0c;由hardware、协议栈回调过来。蓝牙耳机的一些控制命令都会发…

将状态机模式实现为流处理器

在我的上一个博客中&#xff0c;我说我真的以为某些“四人行”&#xff08;GOF&#xff09;模式已经过时了&#xff0c;如果不是过时的话肯定不受欢迎。 特别是我说过StateMachine不是那么有用&#xff0c;因为您通常会想到另一种更简单的方式来执行您正在执行的事情&#xff0…

android 自定义actionbar,如何让android的actionbar浮动且透明

如上图所示&#xff0c;谷歌地图的actionbar是透明的&#xff0c;且浮动在整个布局之上&#xff0c;没有占用布局空间。其实要做到这样的效果&#xff0c;我们首先想到的是两个方面&#xff1a;1.将让actionbar浮动起来。2.给actionbar一个背景&#xff0c;可以为颜色也可以为图…

Ajax与CustomErrors的尴尬

在ASP.NET程序中&#xff0c;为了给用户显示友好的错误信息&#xff0c;通常在web.config中进行如下的设置&#xff1a; <customErrors mode"RemoteOnly" defaultRedirect"/error/error.htm"> </customErrors> 但如果是一个ajax请求在服务端发…

Java创建WebService服务及客户端实现

简介 WebService是一种服务的提供方式&#xff0c;通过WebService&#xff0c;不同应用间相互间调用变的很方便&#xff0c;网络上有很多常用的WebService服务&#xff0c;如&#xff1a;http://developer.51cto.com/art/200908/147125.htm&#xff0c;不同的语言平台对…

Java静态方法可能会产生代码异味

代码气味的定义 &#xff08;来自维基百科&#xff09;&#xff1a; “程序源代码中任何可能表明存在更深层问题的症状。” 在Java中&#xff0c; 静态方法允许您在“类范围”内执行代码&#xff0c;而不是像成员方法这样的实例范围。 这意味着&#xff0c;它们依赖于类级别的变…

Node Express4.x 片段视图 partials

1.在Express 4.x使用片段视图&#xff0c;需要引入partials模块 步骤&#xff1a; 1.在全局中安装express-partials模块&#xff1a; 2.在本地模块中安装express-partials,将模块安装到package.json中&#xff1a; 3.在入口文件(如&#xff1a;app.js)中引入模块&#xff1a; v…

bzoj1690:[Usaco2007 Dec]奶牛的旅行(分数规划+spfa判负环)

PS:此题数组名皆引用&#xff1a;戳我 题目大意&#xff1a;有n个点m条有向边的图&#xff0c;边上有花费&#xff0c;点上有收益&#xff0c;点可以多次经过&#xff0c;但是收益不叠加&#xff0c;边也可以多次经过&#xff0c;但是费用叠加。求一个环使得收益和/花费和最大&…

红米note4x Android7,红米Note4X能升级安卓7.0吗?红米Note4X如何升级Android7.0?

欢迎来到PPL网站的行业资讯知识分类&#xff0c;你现在观看的这篇文章要和大家分享的是关于红米Note4X能升级安卓7.0吗&#xff1f;红米Note4X如何升级Android7.0&#xff1f;的一些相关内容&#xff0c;希望大家能够感兴趣&#xff0c;并且希望我们能够帮助到你&#xff01;在…

java基础----数字签名算法的介绍

数字签名&#xff08;又称公钥数字签名&#xff09;是一种类似写在纸上的普通的物理签名&#xff0c;但是使用了公钥加密领域的技术实现&#xff0c;用于鉴别数字信息的方法。关于数字签名的介绍&#xff0c;可以参见百度百科&#xff1a;http://baike.baidu.com/view/7626.htm…

Android宫格自动换行,九宫格视图的布局及展示(相册选择)

上周一个朋友带的项目出了点问题&#xff0c;招的ios开发人员在实现选取相册图片后用九宫格的样式展示时遇到了瓶颈&#xff0c;花了将近2周都没有解决。后来在跟我交流的过程中他把项目的图片发给我看了下&#xff0c;看完我就笑了&#xff0c;这就只是个算法的问题&#xff0…

具有LCS方法的通用文本比较工具

常见的问题是检测并显示两个文本&#xff08;尤其是几百行或几千行&#xff09;的差异。 使用纯java.lang.String类方法可能是一种解决方案&#xff0c;但是对于此类操作最重要的问题是&#xff0c;“性能”将不能令人满意。 我们需要一种有效的解决方案&#xff0c;其可能具有…