之前其实看视频学习ssm框架的时候有学过,但是只是跟着敲代码,然后代码的记录也不认真。导致想用的时候连代码都不知道在哪,这就是学习的不足吧。在此,再次进行记录一番。。 只用了一个字段作为例子。测试在bishe项目中。
这个配置的信息是我之前的一个博客的,但是用的时候却发现很多不足的地方。 首先是不知道放在哪,位置不确定。然后是对应的错误信息UserValidateionMessages.properties的路径如何加载也不知道怎么写。 最后加载信息如何显示到前端也没有进行记录。。可见博客写的很水。。
文件放在了src/config包下。名称为:UserValidationMessages.properties
user.username.length.error=请输入3-8个字符的用户名这里只以username为例。如果不配置错误信息的存放位置的话,可以不用单独建立对应的properties文件写错误信息,直接在字段上面的message属性中写入对应的错误信息即可,对应的配置时也不需要指定专门的属性文件。
package com.model; import javax.validation.constraints.Size; public class User { private Integer uid; @Size(min=3,max=8,message="{user.username.length.error}") private String username; private String password; private String checkPwd; private String email; public Integer getUid() { return uid; } public void setUid(Integer uid) { this.uid = uid; } public String getCheckPwd() { return checkPwd; } public void setCheckPwd(String checkPwd) { this.checkPwd = checkPwd; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "User [uid=" + uid + ", username=" + username + ", password=" + password + ", getUid()=" + getUid() + ", getUsername()=" + getUsername() + ", getPassword()=" + getPassword() + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString() + "]"; } }以上代码只是处理以及对应的跳转代码。@Valid User user 注解user.对表单提交过来user这个bean进行校验,返回结果给BindingResult result这个对象,在result.hasErrors()中循环把错误信息添加到map对象里面返回到login.jsp
找个地方加上对应的错误信息即可。
<!-- 显示错误信息 --> <c:if test="${fieldError!=null }"> ${fieldError.username} </c:if>详情参考
经过测试,之前博客中将校验器引入到开启驱动中这一步,
即
<mvc:annotation-driven conversion-service="conversionService" validator="validator"></mvc:annotation-driven>如果不用配置文件的话(就是直接在字段上面定义错误消息),可以直接为
<mvc:annotation-driven />这时候的validator="validator"可以省略,因为没起作用。 不然的话,不能够解析出对应的定义的错误信息提示。