表单的校验错误的输出到特定位置
2018-01-25 21:32
246 查看
表单的校验错误的输出
在每一个检验input的后面输出自己的错误信息,不将所有的都输出在一起。首先jsp页面上使用
form:form的要求是在跳到这个页面的时候,进行渲染form必须有个对象传过来,即commondName中的对象名
<@%taglib prefix="form" uri="" /> //body体里面用<form:form>如下: <form:form commandName="test" action="${pageContext.request.contextPath}/login" method="post"> <table> <tr> <td> //path属性将目标指向test对象中的id属性,下面的意思相同,cssErrorClass 属性表示如果不符合要求就执行的css,自己写就行 <form:label path="id" cssErrorClass="a">id:</form:label> </td> <td> <form:input path="id" cssErrorClass="t"/> //下面这个标签=就表示如果,校验失败,就渲染下面的一行代码,如果成功,就不进行渲染, <form:errors path="id" cssClass="errorinput" /> </td> </tr> <tr> <td> <form:label path="name" cssErrorClass="a">name: </form:label> </td> <td> <form:input path="name" cssErrorClass="t"/> <form:errors path="name" cssClass="errorinput" /> </td> </tr> <tr> <td> <input type="submit" value="submit"/> </td> </tr> </table> </form:form>
//Test类的内容 @Size(min = 1,max = 2,message = "{id.length}") private String id; @Size(min = 1,max = 2,message = "{name.length}") private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }
上面说过,form:form的要求是在跳到这个页面的时候,进行渲染form必须有个对象传过来,即commondName中的对象名
所以要有一个传对象过去的controller方法,如下:
@Controller public class TestController { //先传一个对象过去用于渲染 @RequestMapping("/") public String index(Test test,Model model) { model.addAttribute("test",test); return "index"; } //@Valid Test test, Errors errors, 固定顺序和写法,保证错误信息的传递 @RequestMapping("/login") public String login(@Valid Test test, Errors errors, Model model) { model.addAttribute("test",test); model.addAttribute("errors",errors); //测试是不是校验失败,如果失败,返回原页面,上面的两句表示将test对象和errors传到jsp if(errors.hasErrors()){ return "index"; }else{ return "urlTestSuccess"; } }
spring的配置文件
//注入校验器 <mvc:annotation-driven validator="validation" /> <bean class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" id="validation"> <!--校验器--> <property value="org.hibernate.validator.HibernateValidator" name="providerClass"/> <property name="validationMessageSource" ref="messageSource"/> </bean> //配置信息源,让校验器引用 <bean class="org.springframework.context.support.ReloadableResourceBundleMessageSource" id="messageSource"> <property name="basenames"> < d478 list> <value>classpath:validation</value> </list> </property> <property value="utf-8" name="defaultEncoding"/> <!--资源文件120读取一次--> <property value="120" name="cacheSeconds"/> </bean>
最后配置 .properties文件就可以了
id.length=123465897 name.length=987456321
jar包要齐全,而且 .properties的文件要让spring找到,附录validation的jar包 (maven格式)
</dependency> <dependency> <groupId>javax.persistence</groupId> <artifactId>persistence-api</artifactId> <version>1.0.2</version> </dependency> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.2.2.Final</version> </dependency>
看不懂,先看看spring基础
相关文章推荐
- 【调试中非常重要的技巧】如何从错误堆栈的输出判断程序出错的准确位置?
- 框架中的数据校验和表单错误消息提示
- 在windows下如何定位错误输出位置
- 织梦CMS自定义表单“数据校验不对,程序返回错误”解决办法
- 一次项目开发过程中遇到的问题--错误的表单校验导致我的整个系统宕机
- angular 表单校验显示验证失败的错误信息
- Ext JS百强应用:Form验证、表单验证、表单错误提示信息位置 --第4强
- (本程序功能:字符串A中找出包含字符串B中所有字符的位置并输出) 在使用全局变量m的时候,输出错误的结果,而用下面局部变量M就没问题。
- 输出类型转换错误和输入校验
- Dedecms自定义表单“数据校验不对,程序返回错误”的解决方法
- 织梦做在线报名提交表单时出现错误数据校验不对,程序返回
- 第十三周 项目五 输出插入特定位置的数 之后的数组
- 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\41c191fd\ff9345c5\App_Web_login.cshtml.65793277
- Jquery Validate校验后无错误提示但表单无法提交(无反应)
- Cocos2d-Lua 输出脚本预编译错误产生位置
- 编写一个在屏幕指定位置输出特定字符和特定颜色的子程序
- extjs Form验证、表单验证、表单错误提示位置
- struts2表单校验与错误信息处理
- jQuery Validate 表单验证插件----利用jquery.metadata.js将校验规则直接写在class属性里面并定义错误信息的提示
- 检测到通信错误。正在使用的通信协议:"TCP/IP"。正在使用的通信API:"SOCKETS"。检测到错误的位置:""。检测到错误的通信函数:"gethostbyname"。协议特定的错误代码:"*"、"11004"、"*"。 SQLST