Spring MVC表单验证(带批注)

这篇文章提供了一个简单HTML表单验证示例。 它基于带有注释的Spring MVC示例。 该代码可在GitHub的Spring-MVC-Form-Validation目录中找到。

数据

在此示例中,我们将使用bean和JSR303验证批注:

public class MyUser {@NotNull@Size(min=1,max=20)private String name;@Min(0)@Max(120)private int age;public MyUser(String name, int age) {this.name = name;this.age = age;}public MyUser() {name = '';age = 0;}// Setters & Getters}


页数

我们的表单将包含输入元素,但也可能显示错误消息:

<%@page contentType='text/html' pageEncoding='UTF-8'%>
<%@ taglib prefix='form' uri='http://www.springframework.org/tags/form' %>
<!doctype html>
<html>
<head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>My User Form!</title>
</head>
<body><form:form method='post' action='myForm' commandName='myUser'><table><tr><td>Name: <font color='red'><form:errors path='name' /></font></td></tr><tr><td><form:input path='name' /></td></tr><tr><td>Age: <font color='red'><form:errors path='age' /></font></td></tr><tr><td><form:input path='age' /></td></tr><tr><td><input type='submit' value='Submit' /></td></tr></table></form:form>
</body>
</html>

我们的成功页面是:

<%@page contentType='text/html' pageEncoding='UTF-8'%>
<%@taglib prefix='form' uri='http://www.springframework.org/tags/form'%>
<%@ taglib prefix='c' uri='http://java.sun.com/jsp/jstl/core' %>
<!doctype html>
<html>
<head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>Form Processed Successfully!</title>
</head>
<body>Form processed for <c:out value='${myUser.name}' /> ! <br /><a href='<c:url value='/'/>'>Home</a>
</body>
</html>

我们的主页:

<%@page contentType='text/html' pageEncoding='UTF-8'%>
<%@ taglib prefix='c' uri='http://java.sun.com/jsp/jstl/core' %>
<!doctype html>
<html lang='en'>
<head><meta charset='utf-8'><title>Welcome !!!</title>
</head>
<body><h1>Spring Form Validation !!!</h1>
<a href='<c:url value='/myForm'/>'>Go to the form!</a>
</body>
</html>


控制者

注意,我们需要使用

@ModelAttribute确保一个实例
MyUser在模型中始终可用。 在里面 validateForm(),我们需要使用 @ModelAttribute将表单内容移动到 MyUser项目。

@Controller
public class MyController {@RequestMapping(value = '/')public String home() {return 'index';}@ModelAttribute('myUser')public MyUser getLoginForm() {return new MyUser();}@RequestMapping(value = '/myForm', method = RequestMethod.GET)public String showForm(Map model) {return 'myForm';}@RequestMapping(value = '/myForm', method = RequestMethod.POST)public String validateForm(@ModelAttribute('myUser') @Valid MyUser myUser,BindingResult result, Map model) {if (result.hasErrors()) {return 'myForm';}model.put('myUser', myUser);return 'success';}}


Maven依赖

我们需要以下依赖关系。 Hibernate验证程序依赖项对于处理JSR303批注是必需的:

<dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.0.0.GA</version><type>jar</type>
</dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>4.3.0.Final</version>
</dependency>


运行示例

编译后,该示例可以与
mvn tomcat:运行。 然后,浏览:

http:// localhost:8383 // spring-mvc-form-validation /。

如果最终用户输入无效的值,将显示错误消息:


参考: 技术说明博客上的JCG合作伙伴 Jerome Versrynge提供的Spring MVC表单验证(带有批注) 。

翻译自: https://www.javacodegeeks.com/2012/10/spring-mvc-form-validation-with-annotations.html

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

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

相关文章

课时106.边框练习(理解)

让我们做出来如下的样式&#xff1a; 1.首先看下有几个边框&#xff0c;就做几个div&#xff0c;用简单方法div.box$*6 tab键 2.然后给它们设置宽高 3.然后依此来做边框 第一个&#xff1a;有四种方法&#xff0c;第一种最简单 第二个&#xff1a;有两种方法&#xff0c;第二…

课时105.边框属性下(掌握)

2.3连写&#xff08;分别设置四条边的边框&#xff09; border-width:上 右 下 左; border-style:上 右 下 左; border-color:上 右 下 左; 注意点&#xff1a; 1.这三个属性的取值是按顺时针来赋值的 也就是按照上右下左来赋值&#xff0c;而不是按照日常生活…

新mac 下第一次 安装 mongodb 步骤

新入手mac&#xff0c;安装mongo步骤记录&#xff1a;不建议使用网上的brew安装方法&#xff0c;因为试了半天没有成功&#xff0c;应该是新版本限制比较多&#xff01; 从mongodb官网下载mac版本mongo&#xff1a; 1.访问MongoDB官方下载地址 http://www.mongodb.org/download…

201621123065《JAVA程序设计》第11周学习总结

1. 本周学习总结 2. 书面作业 1. 源代码阅读&#xff1a;多线程程序BounceThread 1.1 BallRunnable类有什么用&#xff1f;为什么代码中需要调用Thread.sleep进行休眠&#xff1f; BallRunnable类实现Runnable接口&#xff0c;支持多线程&#xff1b;调用Thread.sleep进行休眠则…

vue使用v-for循环,动态修改element-ui的el-switch

在使用element-ui的el-switch中&#xff0c;因为要用v-for循环&#xff0c;一直没有成功&#xff0c;后来仔细查看文档&#xff0c;发现可以这样写 <el-switch v-for"(item, key) in list" v-model"item.is" :key"key" :active-value"…

前端加按钮将图片另存为_Windows 10系统如何将自己的照片制作成文件夹图标

我们大家都在电脑上建有很多文件夹&#xff0c;有时候查找自己需要的资料文件夹时不太容易&#xff0c;很浪费时间。如果将自己的照片作为常用文件夹的图标&#xff0c;看起来醒目查找时也更为方便些。下面就介绍具体的操作教程。一、将照片格式转换为图标文件格式在电脑上将图…

利用css transition属性实现一个带动画显隐的微信小程序部件

我们先来看效果图 像这样的一个带过渡效果的小部件在我们实际开发中的应用几率还是比较大的&#xff0c;但是在开发微信小程序的过程中可能有的小伙伴发现transition这个属性它不好使&#xff08;下面说明&#xff09;所以我们这个时候会考虑去使用微信官方提供的wx.createAnim…

c语言学生管理系统链表(dev vs2012下可以运行)

struct student { char name[10]; char sex[5]; long int num;//学号 int xuhao; int age; float score[3]; float averange; char DJ;//存放等级哦 struct student *next;};//定义结构体变量保存 名字 性别 年龄 成绩] 结构体声明int n;//存放学生人数int man;//存放统计的男生…

抽象工厂设计模式解释

抽象工厂设计模式是工厂设计模式的另一种形式。 这种模式可以被视为“超级工厂”或“工厂工厂”。 抽象工厂设计模式&#xff08;属于“四人帮”的一部分&#xff09;属于“创新设计模式”类别&#xff0c;它提供了一种封装一组具有公共链接的工厂的方法&#xff0c;而无需突出…

app账号退不出去_最新!多交的税可以退,同学,你今天退税了吗?

4.3 号 更新。1、有知友留言&#xff0c;已经收到退税了。2、部分地区陆续开放申报了&#xff0c;建议大家不要着急。3、大家耐心一点&#xff0c;该是你的就是你的&#xff0c;退税这个事多退少补&#xff0c;建议大家在白天上班时间去APP上看看&#xff0c;毕竟相关公务人员也…

课时77.序选择器(掌握)

CSS3中新增的选择器最具代表性的就是序选择器。 1.同级别的第几个 1. :first-child 选中同级别中的第一个标签 注意点&#xff1a;不区分类型 但是我们这里有一个注意点&#xff0c;如果我们在第一个p之前加一个h1&#xff0c;则第一个p就不变红了&#xff0c;因为我们…

Gulp——文件压缩和文件指纹

先看下文件指纹添加成功发布后的“成果”。 首先介绍下gulp的文件压缩&#xff08;压缩css和js&#xff09; &#xff08;下面介绍的代码移步这里&#xff09; 我的文件目录如下&#xff1a; &#xff08;标红部分是生成的处理后的文件&#xff09; 如何使用gulp&#xff0c;请…

Java 7:使用NIO.2进行文件过滤-第2部分

大家好。 这是使用NIO.2系列进行文件过滤的第2部分。 对于那些尚未阅读第1部分的人 &#xff0c;这里有个回顾。 NIO.2是自Java 7起JDK中包含的用于I / O操作的新API。使用此新API&#xff0c;您可以执行与java.io相同的操作&#xff0c;以及许多出色的功能&#xff0c;例如&a…

课时76.兄弟选择器(掌握)

我们先来明确一点&#xff0c;什么是兄弟&#xff1f; 比如&#xff0c;head和body是兄弟&#xff0c;必须是同级关系&#xff0c;如果是嵌套关系&#xff0c;儿子&#xff0c;孙子则不可以。 1.相邻兄弟选择器 CSS2 作用&#xff1a;给指定选择器后面紧跟的那个选择器选中的…

24v开关电源维修技巧_康佳LED液晶彩电KPS+L1900C301电源板原理与维修

康佳液晶彩电采用的KPSL1900C3-01型电源板&#xff0c;编号为34007728&#xff0c;版本号为35015686集成电路采用FAN7530FSGM300FSFR1700组合方案&#xff0c;输出5.1VSB/4A、24V/4A、12V/4A电压。应用于康佳LED47IS988PD、LED42M11PD、LED46MS92DC、LED42IS988PDE、LED42X5000…

课时71.后代选择器(掌握)

1.什么是后代选择器&#xff1f; 作用&#xff1a;找到指定标签的所有后代标签&#xff0c;设置属性。 首先你要明确什么是后代&#xff1f; 你的儿子&#xff0c;孙子&#xff0c;重孙子等&#xff0c;只要有你的血脉的&#xff0c;都是你的后代。 我们先来举个例子 我们想…

java小球碰撞界面设计_JavaScript实现小球碰撞特效

JavaScript实现小球碰撞特效。类似自由落体运动。实现原理非常简单&#xff0c;就是动态的改变每个元素的坐标。使用radius属性将图片圆角化。使用left&#xff0c;top属性动态的改变小球的位置。碰撞反弹球&#xff0c;当碰撞到容器的边缘后&#xff0c;进行反弹&#xff0c;反…

es6常用基础合集

es6常用基础合集 在实际开发中&#xff0c;ES6已经非常普及了。掌握ES6的知识变成了一种必须。尽管我们在使用时仍然需要经过babel编译。 ES6彻底改变了前端的编码风格&#xff0c;可以说对于前端的影响非常巨大。值得高兴的是&#xff0c;如果你熟悉ES5&#xff0c;学习ES6并不…

java接口开发_如果你想学好Java,这些你需要了解

01基本知识  在学习Java之前&#xff0c;您需要了解计算机的基本知识&#xff0c;然后再学习Java。同时&#xff0c;您需要熟悉DOS命令、Java概述、JDK环境安装配置、环境变量配置。JDK和环境变量配置完成后&#xff0c;就可以编写Java程序了。02编程格式  此时&#xff0c…

从Java程序生成QR码图像

如果您精通技术和小工具&#xff0c;则必须了解QR码。 这些天&#xff0c;到处都可以找到它-在博客&#xff0c;网站&#xff0c;甚至在某些公共场所。 这在移动应用程序中非常流行&#xff0c;在移动应用程序中&#xff0c;您可以使用QR Code扫描仪应用程序扫描QR Code&#x…