关于validator验证器操作

来源:互联网 发布:八爪鱼数据抓取 知乎 编辑:程序博客网 时间:2024/06/01 17:07
 
关于validator验证器操作如以下:

在springServlet.xml配置如下操作
<!-- 启动注解驱动 -->
 <mvc:annotation-driven validator="validator"/>

<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean ">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
 </bean>

---------------------------------------------------------------------------------
第一种:

这种更好用*****

在实体类的属性中做如下操作:
public class User implements Serializable{
//利用MVC注解对数据进行正则验证
@Pattern(regexp="\\w{6,8}",message="用户名不能为空,且必须为6-8位")
private String registName;

@Pattern(regexp="[0-9a-zA-Z]{6,8}",message="密码不能为空且必须为数字或英文,6-8位")
private String registPwd;

@Pattern(regexp="^(13|15|18)[0-9]{9}$",message="电话号码不能为空且只能是13、15、18开始的手机号码")
private String registPhone;

@Email(message="邮箱必须符合邮箱格式要求")
@NotEmpty(message="邮箱不能为空")
private String registEmail;

@NotEmpty(message="性别不能为空")
private String registGender;
}

在controller中做如下操作
@RequestMapping(path="/testRegist",method=RequestMethod.POST)
public String  regist(@Valid TestRegistBean regist , BindingResult result , ModelMap model){

if (result.hasErrors()) {
System.out.println(result.getFieldErrorCount());

List<FieldError> list = result.getFieldErrors();

//mvc自动将对象装进了request.setAttribute("regist", regist),在页面直接用EL表达式获取属性值即可
// model.addAttribute("regist", regist);

for (FieldError fieldError : list) {

System.out.println(fieldError.getField());
System.out.println(fieldError.getDefaultMessage());
//将对象字段属性和字段错误信息存入model中,以便在页面用EL获取提示信息
model.addAttribute(fieldError.getField(), fieldError.getDefaultMessage());
}
return "testRegist";
}
return "success";



在jsp中做如下操作
<form action="testRegist.do" method="post">

    <!-- value="${testRegistBean.registName }:将已经输入在文本框里的值保留 -->

    用户名:<input type="text" name="registName" value="${testRegistBean.registName }"/>
    <!-- ${registName }:获取验证不通过时的错误提示信息 -->
    <span style="color: red">${registName }</span><br/>

    密码<input type="password" name="registPwd" value="${testRegistBean.registPwd }"/>
    <span style="color: red">${registPwd }</span><br/>

    电话:<input type="text" name="registPhone" value="${testRegistBean.registPhone }"/>
    <span style="color: red">${registPhone }</span><br/>

    邮箱:<input type="text" name="registEmail" value="${testRegistBean.registEmail }"/>
    <span style="color: red">${registEmail }</span><br/>

    性别:<input type="text" name="registGender" value="${testRegistBean.registGender }"/>
    <span style="color: red">${registGender }</span><br/>

    <input type="submit" value="提交"/>
    </form>

---------------------------------------------------------------------------------

第二种:

在实体类的属性中做如下操作:
public class UserBean {
@NotEmpty(message="用户名不能为空")
@Length(max=8,min=4,message="长度在4-8位之间")
private String username;
@NotEmpty(message="密码不能为空")
private String password;
}


在controller层做如下操作
@RequestMapping(path="/login",method=RequestMethod.POST)
public ModelAndView login(@Valid UserBean user , BindingResult result){

System.out.println(user.getUsername()+" "+user.getPassword());

ModelAndView mav=new ModelAndView();

if(result.hasErrors()){
mav.setViewName("login");
return mav;
}
mav.setViewName("main");
mav.addObject("userName",user.getUsername());
return mav;
}

在jsp页面做如下操作

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags/form"%>

<!-- spring 标签 -->
<spring:form action="login.do" method="post" commandName="userBean">
name:<input type="text" name="username" value="${user.username }"/>
<!-- 获取相应字段错误提示信息 -->
<spring:errors delimiter="," path="username"></spring:errors><br />

pwd:<input type="password" name="password"  value="${user.password }"/>
<!-- 获取相应字段错误提示信息 -->
<spring:errors delimiter="," path="password"></spring:errors><br /> 

<input type="submit">
</spring:form>


---------------------------------------------------------------------------------
原创粉丝点击