人性化的验证(Validate)系统

news/2025/2/9 6:20:32

为何要验证(Validate)
   验证是系统中一个必不可少的部分,前端验证、后台验证中起来往往会发现,一个简单完整的CRUD应用中,用来处理与验证有关的代码或配置就占了几乎三分之一。Struts1.x时代的验证就不提了。不管是Struts2(webwork)的验证还是JSF里面提供的验证,都是采用按步就班的方式,一笔一划的写出来,仍然没有达到能使验证工作变得简单、灵活。

如何验证
  EasyJWeb完善了验证系统,使验证变得更加容易,灵活控制。你可以使用非常简单的标签或配置就能使系统拥有服务器端及客户端验证的功能。
  这里使用一个简单的示例来介绍。有一个Person模型,如下所示:
  包含id、name、sex、borndate、height、mail、homepage等几个属性。

  假如我们要让name、sex、heigth、borndate必填,并且borndate必须在1908到2008年之间, mail属性只接收正确的email信息,homepage必须接收url信息。则我们只需要在Domain对象(可以是Entity对象,也可以是传输Command对象)中加入下面的配置信息即可:

 

@FormPO(name = " person " ,validators = {@Validator(name="required",field="name,sex,heigth,borndate"),@Validator(name="range",field="borndate",value="min:1908-01-01;max:2008-01-01"),@Validator(name="email",field="mail"),@Validator(name="url",field="homepage")} )
public   class  Person {
private Long id;
private String name;
private String sex;
private String mail;
private Integer heigth;
private Date borndate;
public String homepage;
//setter及getter方法
}



不需要进行复杂的配置,只需要使用符合人类语言习惯的简单标注,就能实现所需要的验证业务逻辑。
  @Validator验证标签的使用非常灵活,你只要具有充分的想像力,就能描述出符合特定需要的验证逻辑。比如上面的例子中,我们规定name不允许为空,字符数最小不能少于5个,最大不能超过10个,在进行字符验证前需要清除掉前后的空格。则我们可以使用下面的验证标签:
  

@Validator(name = ”string”,value = ”blank;trim;required;min: 5 ;max: 10 ;minMsg:最少不能少于5个字符;maxMsg:最大不能超过10字符”)
  
private  String name;

错误信息的显示
在表示层的页面模板中,我们可以使用下面的模板标签来显示验证错误信息,
$!errors-显示全部验证错误信息。
$!errors.name-显示name属性(字段)的错误信息。
如下面的的Form

< form  name ="person_new_form"  id ="person_new_form"  method ="post"  action ="/ejf/person/create" >
请输入姓名:
< input  name ="name"  type ="text"  id ="person_name"  value ="$!name"   /> $!errors.name
电子邮箱:
< input  name ="mail"  type ="text"  id ="person_mail"  value ="$!mail"   /> $!errors.mail

3、统一的验证标签@Validator

public  @ interface  Validator  {
 
public String name();// 验证器的名称,如required,string,range等
 public String value() default "";// 验证器的值,使用;号作为分隔符存放各个参数。如value="required;min:5;max:20"
 public String msg() default "";// 默认错误提示信息,当验证无法通过时显示的提示信息
 public String field() default "";// 字段名称,对于property及field类型的校验均可用,也是错误对象的主属性名称。可以用于多个字段,此时需要使用,隔开
 public String displayName() default "";// 定义对象的显示名称,默认情况下为field的名称,可以通过@Field中的name属性定义。
 public ValidateType type() default ValidateType.Property;// 校验类型,默认是对属性进行校验
 public boolean required() default false;// 是否必填字段,每个验证器都可以通过设置属性required=true来指定该属性为必填项
 public String key() default "";// 多国语言显示值的编码
}

 

4、EasyJWeb内置的Validator验证器
  Validators.RequiredValidator-用来定义必填属性,预定义名称required。
  Validators.StringValidator-字符串验证器,定义字符串的属性,预定义名称string。
  Validators.URLValidator-URL字符串验证器,匹配一个合法的URL,预定义名称url。
  Validators.RegexpValidator-正则表达式验证器,匹配指定条件的正则表达式,预定义名称regex。
  Validators.EmailValidator-Email字符验证器,匹配正确的email字符串,预定义名称email。
  Validators.RangeValidator-范围验证器,用来限制属性必须在指定的范围之内,预定义名称range。

  验证器引擎的触发也是非常灵活的,如果是普通的CRUD应用或者是基于普通CRUD应用基础上扩展的应用,则在基本的添删改查中会自动调用验证逻辑。
  如果是自定义的Action,可通过调用form.toPo等方法触法验证逻辑。如果是使用IDAO接口进行的调用,则在进行数据持久化之前会调用验证逻辑。

5、自定义验证器
  除了几个内置的验证器以外,EasyJWeb支持用户自定义的验证器。用户自定义的的验证器只需要实现Validator接口,即可注册到系统中使用。Validator的内容如下:

public   interface  Validator  {
 
/**
  * 执行具体的验证操作
  * 
  * 
@param obj
  *            验证目标对象
  * 
@param value
  *            验证值
  * 
@param errors
  *            验证异常信息封装
  
*/

 
void validate(TargetObject obj, Object value, Errors errors); 
 
/**
  * 验证器默认错误信息
  * 
  * 
@return 返回验证器默认的错误提示信息
  
*/

 String getDefaultMessage();
}

  在实际应用中,一般通过使用继承抽象类AbstractValidator来实现自定义的验证器。如下面是最简单验证器Required的实现:

  public   class  RequiredValidator  extends  AbstractValidator  {
  
public RequiredValidator() {

  }

  
public void validate(TargetObject obj, Object value, Errors errors) {
   
if (value == null)
    addError(obj, value, errors);
   
else if (value instanceof String) {
   }

  }

  
public String getDefaultMessage() {
   
return "{%0}不能为空!";
  }

 }


 




为何要验证(Validate)
   验证是系统中一个必不可少的部分,前端验证、后台验证中起来往往会发现,一个简单完整的CRUD应用中,用来处理与验证有关的代码或配置就占了几乎三分之一。Struts1.x时代的验证就不提了。不管是Struts2(webwork)的验证还是JSF里面提供的验证,都是采用按步就班的方式,一笔一划的写出来,仍然没有达到能使验证工作变得简单、灵活。

如何验证
  EasyJWeb完善了验证系统,使验证变得更加容易,灵活控制。你可以使用非常简单的标签或配置就能使系统拥有服务器端及客户端验证的功能。
  这里使用一个简单的示例来介绍。有一个Person模型,如下所示:
  包含id、name、sex、borndate、height、mail、homepage等几个属性。

  假如我们要让name、sex、heigth、borndate必填,并且borndate必须在1908到2008年之间, mail属性只接收正确的email信息,homepage必须接收url信息。则我们只需要在Domain对象(可以是Entity对象,也可以是传输Command对象)中加入下面的配置信息即可:

 

@FormPO(name = " person " ,validators = {@Validator(name="required",field="name,sex,heigth,borndate"),@Validator(name="range",field="borndate",value="min:1908-01-01;max:2008-01-01"),@Validator(name="email",field="mail"),@Validator(name="url",field="homepage")} )
public   class  Person {
private Long id;
private String name;
private String sex;
private String mail;
private Integer heigth;
private Date borndate;
public String homepage;
//setter及getter方法
}



不需要进行复杂的配置,只需要使用符合人类语言习惯的简单标注,就能实现所需要的验证业务逻辑。
  @Validator验证标签的使用非常灵活,你只要具有充分的想像力,就能描述出符合特定需要的验证逻辑。比如上面的例子中,我们规定name不允许为空,字符数最小不能少于5个,最大不能超过10个,在进行字符验证前需要清除掉前后的空格。则我们可以使用下面的验证标签:
  

@Validator(name = ”string”,value = ”blank;trim;required;min: 5 ;max: 10 ;minMsg:最少不能少于5个字符;maxMsg:最大不能超过10字符”)
  
private  String name;

错误信息的显示
在表示层的页面模板中,我们可以使用下面的模板标签来显示验证错误信息,
$!errors-显示全部验证错误信息。
$!errors.name-显示name属性(字段)的错误信息。
如下面的的Form

< form  name ="person_new_form"  id ="person_new_form"  method ="post"  action ="/ejf/person/create" >
请输入姓名:
< input  name ="name"  type ="text"  id ="person_name"  value ="$!name"   /> $!errors.name
电子邮箱:
< input  name ="mail"  type ="text"  id ="person_mail"  value ="$!mail"   /> $!errors.mail

3、统一的验证标签@Validator

public  @ interface  Validator  {
 
public String name();// 验证器的名称,如required,string,range等
 public String value() default "";// 验证器的值,使用;号作为分隔符存放各个参数。如value="required;min:5;max:20"
 public String msg() default "";// 默认错误提示信息,当验证无法通过时显示的提示信息
 public String field() default "";// 字段名称,对于property及field类型的校验均可用,也是错误对象的主属性名称。可以用于多个字段,此时需要使用,隔开
 public String displayName() default "";// 定义对象的显示名称,默认情况下为field的名称,可以通过@Field中的name属性定义。
 public ValidateType type() default ValidateType.Property;// 校验类型,默认是对属性进行校验
 public boolean required() default false;// 是否必填字段,每个验证器都可以通过设置属性required=true来指定该属性为必填项
 public String key() default "";// 多国语言显示值的编码
}

 

4、EasyJWeb内置的Validator验证器
  Validators.RequiredValidator-用来定义必填属性,预定义名称required。
  Validators.StringValidator-字符串验证器,定义字符串的属性,预定义名称string。
  Validators.URLValidator-URL字符串验证器,匹配一个合法的URL,预定义名称url。
  Validators.RegexpValidator-正则表达式验证器,匹配指定条件的正则表达式,预定义名称regex。
  Validators.EmailValidator-Email字符验证器,匹配正确的email字符串,预定义名称email。
  Validators.RangeValidator-范围验证器,用来限制属性必须在指定的范围之内,预定义名称range。

  验证器引擎的触发也是非常灵活的,如果是普通的CRUD应用或者是基于普通CRUD应用基础上扩展的应用,则在基本的添删改查中会自动调用验证逻辑。
  如果是自定义的Action,可通过调用form.toPo等方法触法验证逻辑。如果是使用IDAO接口进行的调用,则在进行数据持久化之前会调用验证逻辑。

5、自定义验证器
  除了几个内置的验证器以外,EasyJWeb支持用户自定义的验证器。用户自定义的的验证器只需要实现Validator接口,即可注册到系统中使用。Validator的内容如下:

public   interface  Validator  {
 
/**
  * 执行具体的验证操作
  * 
  * 
@param obj
  *            验证目标对象
  * 
@param value
  *            验证值
  * 
@param errors
  *            验证异常信息封装
  
*/

 
void validate(TargetObject obj, Object value, Errors errors); 
 
/**
  * 验证器默认错误信息
  * 
  * 
@return 返回验证器默认的错误提示信息
  
*/

 String getDefaultMessage();
}

  在实际应用中,一般通过使用继承抽象类AbstractValidator来实现自定义的验证器。如下面是最简单验证器Required的实现:

  public   class  RequiredValidator  extends  AbstractValidator  {
  
public RequiredValidator() {

  }

  
public void validate(TargetObject obj, Object value, Errors errors) {
   
if (value == null)
    addError(obj, value, errors);
   
else if (value instanceof String) {
   }

  }

  
public String getDefaultMessage() {
   
return "{%0}不能为空!";
  }

 }


 




为何要验证(Validate)
   验证是系统中一个必不可少的部分,前端验证、后台验证中起来往往会发现,一个简单完整的CRUD应用中,用来处理与验证有关的代码或配置就占了几乎三分之一。Struts1.x时代的验证就不提了。不管是Struts2(webwork)的验证还是JSF里面提供的验证,都是采用按步就班的方式,一笔一划的写出来,仍然没有达到能使验证工作变得简单、灵活。

如何验证
  EasyJWeb完善了验证系统,使验证变得更加容易,灵活控制。你可以使用非常简单的标签或配置就能使系统拥有服务器端及客户端验证的功能。
  这里使用一个简单的示例来介绍。有一个Person模型,如下所示:
  包含id、name、sex、borndate、height、mail、homepage等几个属性。

  假如我们要让name、sex、heigth、borndate必填,并且borndate必须在1908到2008年之间, mail属性只接收正确的email信息,homepage必须接收url信息。则我们只需要在Domain对象(可以是Entity对象,也可以是传输Command对象)中加入下面的配置信息即可:

 

@FormPO(name = " person " ,validators = {@Validator(name="required",field="name,sex,heigth,borndate"),@Validator(name="range",field="borndate",value="min:1908-01-01;max:2008-01-01"),@Validator(name="email",field="mail"),@Validator(name="url",field="homepage")} )
public   class  Person {
private Long id;
private String name;
private String sex;
private String mail;
private Integer heigth;
private Date borndate;
public String homepage;
//setter及getter方法
}



不需要进行复杂的配置,只需要使用符合人类语言习惯的简单标注,就能实现所需要的验证业务逻辑。
  @Validator验证标签的使用非常灵活,你只要具有充分的想像力,就能描述出符合特定需要的验证逻辑。比如上面的例子中,我们规定name不允许为空,字符数最小不能少于5个,最大不能超过10个,在进行字符验证前需要清除掉前后的空格。则我们可以使用下面的验证标签:
  

@Validator(name = ”string”,value = ”blank;trim;required;min: 5 ;max: 10 ;minMsg:最少不能少于5个字符;maxMsg:最大不能超过10字符”)
  
private  String name;

错误信息的显示
在表示层的页面模板中,我们可以使用下面的模板标签来显示验证错误信息,
$!errors-显示全部验证错误信息。
$!errors.name-显示name属性(字段)的错误信息。
如下面的的Form

< form  name ="person_new_form"  id ="person_new_form"  method ="post"  action ="/ejf/person/create" >
请输入姓名:
< input  name ="name"  type ="text"  id ="person_name"  value ="$!name"   /> $!errors.name
电子邮箱:
< input  name ="mail"  type ="text"  id ="person_mail"  value ="$!mail"   /> $!errors.mail

3、统一的验证标签@Validator

public  @ interface  Validator  {
 
public String name();// 验证器的名称,如required,string,range等
 public String value() default "";// 验证器的值,使用;号作为分隔符存放各个参数。如value="required;min:5;max:20"
 public String msg() default "";// 默认错误提示信息,当验证无法通过时显示的提示信息
 public String field() default "";// 字段名称,对于property及field类型的校验均可用,也是错误对象的主属性名称。可以用于多个字段,此时需要使用,隔开
 public String displayName() default "";// 定义对象的显示名称,默认情况下为field的名称,可以通过@Field中的name属性定义。
 public ValidateType type() default ValidateType.Property;// 校验类型,默认是对属性进行校验
 public boolean required() default false;// 是否必填字段,每个验证器都可以通过设置属性required=true来指定该属性为必填项
 public String key() default "";// 多国语言显示值的编码
}

 

4、EasyJWeb内置的Validator验证器
  Validators.RequiredValidator-用来定义必填属性,预定义名称required。
  Validators.StringValidator-字符串验证器,定义字符串的属性,预定义名称string。
  Validators.URLValidator-URL字符串验证器,匹配一个合法的URL,预定义名称url。
  Validators.RegexpValidator-正则表达式验证器,匹配指定条件的正则表达式,预定义名称regex。
  Validators.EmailValidator-Email字符验证器,匹配正确的email字符串,预定义名称email。
  Validators.RangeValidator-范围验证器,用来限制属性必须在指定的范围之内,预定义名称range。

  验证器引擎的触发也是非常灵活的,如果是普通的CRUD应用或者是基于普通CRUD应用基础上扩展的应用,则在基本的添删改查中会自动调用验证逻辑。
  如果是自定义的Action,可通过调用form.toPo等方法触法验证逻辑。如果是使用IDAO接口进行的调用,则在进行数据持久化之前会调用验证逻辑。

5、自定义验证器
  除了几个内置的验证器以外,EasyJWeb支持用户自定义的验证器。用户自定义的的验证器只需要实现Validator接口,即可注册到系统中使用。Validator的内容如下:

public   interface  Validator  {
 
/**
  * 执行具体的验证操作
  * 
  * 
@param obj
  *            验证目标对象
  * 
@param value
  *            验证值
  * 
@param errors
  *            验证异常信息封装
  
*/

 
void validate(TargetObject obj, Object value, Errors errors); 
 
/**
  * 验证器默认错误信息
  * 
  * 
@return 返回验证器默认的错误提示信息
  
*/

 String getDefaultMessage();
}

  在实际应用中,一般通过使用继承抽象类AbstractValidator来实现自定义的验证器。如下面是最简单验证器Required的实现:

  public   class  RequiredValidator  extends  AbstractValidator  {
  
public RequiredValidator() {

  }

  
public void validate(TargetObject obj, Object value, Errors errors) {
   
if (value == null)
    addError(obj, value, errors);
   
else if (value instanceof String) {
   }

  }

  
public String getDefaultMessage() {
   
return "{%0}不能为空!";
  }

 }


 




为何要验证(Validate)
   验证是系统中一个必不可少的部分,前端验证、后台验证中起来往往会发现,一个简单完整的CRUD应用中,用来处理与验证有关的代码或配置就占了几乎三分之一。Struts1.x时代的验证就不提了。不管是Struts2(webwork)的验证还是JSF里面提供的验证,都是采用按步就班的方式,一笔一划的写出来,仍然没有达到能使验证工作变得简单、灵活。

如何验证
  EasyJWeb完善了验证系统,使验证变得更加容易,灵活控制。你可以使用非常简单的标签或配置就能使系统拥有服务器端及客户端验证的功能。
  这里使用一个简单的示例来介绍。有一个Person模型,如下所示:
  包含id、name、sex、borndate、height、mail、homepage等几个属性。

  假如我们要让name、sex、heigth、borndate必填,并且borndate必须在1908到2008年之间, mail属性只接收正确的email信息,homepage必须接收url信息。则我们只需要在Domain对象(可以是Entity对象,也可以是传输Command对象)中加入下面的配置信息即可:

 

@FormPO(name = " person " ,validators = {@Validator(name="required",field="name,sex,heigth,borndate"),@Validator(name="range",field="borndate",value="min:1908-01-01;max:2008-01-01"),@Validator(name="email",field="mail"),@Validator(name="url",field="homepage")} )
public   class  Person {
private Long id;
private String name;
private String sex;
private String mail;
private Integer heigth;
private Date borndate;
public String homepage;
//setter及getter方法
}



不需要进行复杂的配置,只需要使用符合人类语言习惯的简单标注,就能实现所需要的验证业务逻辑。
  @Validator验证标签的使用非常灵活,你只要具有充分的想像力,就能描述出符合特定需要的验证逻辑。比如上面的例子中,我们规定name不允许为空,字符数最小不能少于5个,最大不能超过10个,在进行字符验证前需要清除掉前后的空格。则我们可以使用下面的验证标签:
  

@Validator(name = ”string”,value = ”blank;trim;required;min: 5 ;max: 10 ;minMsg:最少不能少于5个字符;maxMsg:最大不能超过10字符”)
  
private  String name;

错误信息的显示
在表示层的页面模板中,我们可以使用下面的模板标签来显示验证错误信息,
$!errors-显示全部验证错误信息。
$!errors.name-显示name属性(字段)的错误信息。
如下面的的Form

< form  name ="person_new_form"  id ="person_new_form"  method ="post"  action ="/ejf/person/create" >
请输入姓名:
< input  name ="name"  type ="text"  id ="person_name"  value ="$!name"   /> $!errors.name
电子邮箱:
< input  name ="mail"  type ="text"  id ="person_mail"  value ="$!mail"   /> $!errors.mail

3、统一的验证标签@Validator

public  @ interface  Validator  {
 
public String name();// 验证器的名称,如required,string,range等
 public String value() default "";// 验证器的值,使用;号作为分隔符存放各个参数。如value="required;min:5;max:20"
 public String msg() default "";// 默认错误提示信息,当验证无法通过时显示的提示信息
 public String field() default "";// 字段名称,对于property及field类型的校验均可用,也是错误对象的主属性名称。可以用于多个字段,此时需要使用,隔开
 public String displayName() default "";// 定义对象的显示名称,默认情况下为field的名称,可以通过@Field中的name属性定义。
 public ValidateType type() default ValidateType.Property;// 校验类型,默认是对属性进行校验
 public boolean required() default false;// 是否必填字段,每个验证器都可以通过设置属性required=true来指定该属性为必填项
 public String key() default "";// 多国语言显示值的编码
}

 

4、EasyJWeb内置的Validator验证器
  Validators.RequiredValidator-用来定义必填属性,预定义名称required。
  Validators.StringValidator-字符串验证器,定义字符串的属性,预定义名称string。
  Validators.URLValidator-URL字符串验证器,匹配一个合法的URL,预定义名称url。
  Validators.RegexpValidator-正则表达式验证器,匹配指定条件的正则表达式,预定义名称regex。
  Validators.EmailValidator-Email字符验证器,匹配正确的email字符串,预定义名称email。
  Validators.RangeValidator-范围验证器,用来限制属性必须在指定的范围之内,预定义名称range。

  验证器引擎的触发也是非常灵活的,如果是普通的CRUD应用或者是基于普通CRUD应用基础上扩展的应用,则在基本的添删改查中会自动调用验证逻辑。
  如果是自定义的Action,可通过调用form.toPo等方法触法验证逻辑。如果是使用IDAO接口进行的调用,则在进行数据持久化之前会调用验证逻辑。

5、自定义验证器
  除了几个内置的验证器以外,EasyJWeb支持用户自定义的验证器。用户自定义的的验证器只需要实现Validator接口,即可注册到系统中使用。Validator的内容如下:

public   interface  Validator  {
 
/**
  * 执行具体的验证操作
  * 
  * 
@param obj
  *            验证目标对象
  * 
@param value
  *            验证值
  * 
@param errors
  *            验证异常信息封装
  
*/

 
void validate(TargetObject obj, Object value, Errors errors); 
 
/**
  * 验证器默认错误信息
  * 
  * 
@return 返回验证器默认的错误提示信息
  
*/

 String getDefaultMessage();
}

  在实际应用中,一般通过使用继承抽象类AbstractValidator来实现自定义的验证器。如下面是最简单验证器Required的实现:

  public   class  RequiredValidator  extends  AbstractValidator  {
  
public RequiredValidator() {

  }

  
public void validate(TargetObject obj, Object value, Errors errors) {
   
if (value == null)
    addError(obj, value, errors);
   
else if (value instanceof String) {
   }

  }

  
public String getDefaultMessage() {
   
return "{%0}不能为空!";
  }

 }


 




为何要验证(Validate)
   验证是系统中一个必不可少的部分,前端验证、后台验证中起来往往会发现,一个简单完整的CRUD应用中,用来处理与验证有关的代码或配置就占了几乎三分之一。Struts1.x时代的验证就不提了。不管是Struts2(webwork)的验证还是JSF里面提供的验证,都是采用按步就班的方式,一笔一划的写出来,仍然没有达到能使验证工作变得简单、灵活。

如何验证
  EasyJWeb完善了验证系统,使验证变得更加容易,灵活控制。你可以使用非常简单的标签或配置就能使系统拥有服务器端及客户端验证的功能。
  这里使用一个简单的示例来介绍。有一个Person模型,如下所示:
  包含id、name、sex、borndate、height、mail、homepage等几个属性。

  假如我们要让name、sex、heigth、borndate必填,并且borndate必须在1908到2008年之间, mail属性只接收正确的email信息,homepage必须接收url信息。则我们只需要在Domain对象(可以是Entity对象,也可以是传输Command对象)中加入下面的配置信息即可:

 

@FormPO(name = " person " ,validators = {@Validator(name="required",field="name,sex,heigth,borndate"),@Validator(name="range",field="borndate",value="min:1908-01-01;max:2008-01-01"),@Validator(name="email",field="mail"),@Validator(name="url",field="homepage")} )
public   class  Person {
private Long id;
private String name;
private String sex;
private String mail;
private Integer heigth;
private Date borndate;
public String homepage;
//setter及getter方法
}



不需要进行复杂的配置,只需要使用符合人类语言习惯的简单标注,就能实现所需要的验证业务逻辑。
  @Validator验证标签的使用非常灵活,你只要具有充分的想像力,就能描述出符合特定需要的验证逻辑。比如上面的例子中,我们规定name不允许为空,字符数最小不能少于5个,最大不能超过10个,在进行字符验证前需要清除掉前后的空格。则我们可以使用下面的验证标签:
  

@Validator(name = ”string”,value = ”blank;trim;required;min: 5 ;max: 10 ;minMsg:最少不能少于5个字符;maxMsg:最大不能超过10字符”)
  
private  String name;

错误信息的显示
在表示层的页面模板中,我们可以使用下面的模板标签来显示验证错误信息,
$!errors-显示全部验证错误信息。
$!errors.name-显示name属性(字段)的错误信息。
如下面的的Form

< form  name ="person_new_form"  id ="person_new_form"  method ="post"  action ="/ejf/person/create" >
请输入姓名:
< input  name ="name"  type ="text"  id ="person_name"  value ="$!name"   /> $!errors.name
电子邮箱:
< input  name ="mail"  type ="text"  id ="person_mail"  value ="$!mail"   /> $!errors.mail

3、统一的验证标签@Validator

public  @ interface  Validator  {
 
public String name();// 验证器的名称,如required,string,range等
 public String value() default "";// 验证器的值,使用;号作为分隔符存放各个参数。如value="required;min:5;max:20"
 public String msg() default "";// 默认错误提示信息,当验证无法通过时显示的提示信息
 public String field() default "";// 字段名称,对于property及field类型的校验均可用,也是错误对象的主属性名称。可以用于多个字段,此时需要使用,隔开
 public String displayName() default "";// 定义对象的显示名称,默认情况下为field的名称,可以通过@Field中的name属性定义。
 public ValidateType type() default ValidateType.Property;// 校验类型,默认是对属性进行校验
 public boolean required() default false;// 是否必填字段,每个验证器都可以通过设置属性required=true来指定该属性为必填项
 public String key() default "";// 多国语言显示值的编码
}

 

4、EasyJWeb内置的Validator验证器
  Validators.RequiredValidator-用来定义必填属性,预定义名称required。
  Validators.StringValidator-字符串验证器,定义字符串的属性,预定义名称string。
  Validators.URLValidator-URL字符串验证器,匹配一个合法的URL,预定义名称url。
  Validators.RegexpValidator-正则表达式验证器,匹配指定条件的正则表达式,预定义名称regex。
  Validators.EmailValidator-Email字符验证器,匹配正确的email字符串,预定义名称email。
  Validators.RangeValidator-范围验证器,用来限制属性必须在指定的范围之内,预定义名称range。

  验证器引擎的触发也是非常灵活的,如果是普通的CRUD应用或者是基于普通CRUD应用基础上扩展的应用,则在基本的添删改查中会自动调用验证逻辑。
  如果是自定义的Action,可通过调用form.toPo等方法触法验证逻辑。如果是使用IDAO接口进行的调用,则在进行数据持久化之前会调用验证逻辑。

5、自定义验证器
  除了几个内置的验证器以外,EasyJWeb支持用户自定义的验证器。用户自定义的的验证器只需要实现Validator接口,即可注册到系统中使用。Validator的内容如下:

public   interface  Validator  {
 
/**
  * 执行具体的验证操作
  * 
  * 
@param obj
  *            验证目标对象
  * 
@param value
  *            验证值
  * 
@param errors
  *            验证异常信息封装
  
*/

 
void validate(TargetObject obj, Object value, Errors errors); 
 
/**
  * 验证器默认错误信息
  * 
  * 
@return 返回验证器默认的错误提示信息
  
*/

 String getDefaultMessage();
}

  在实际应用中,一般通过使用继承抽象类AbstractValidator来实现自定义的验证器。如下面是最简单验证器Required的实现:

  public   class  RequiredValidator  extends  AbstractValidator  {
  
public RequiredValidator() {

  }

  
public void validate(TargetObject obj, Object value, Errors errors) {
   
if (value == null)
    addError(obj, value, errors);
   
else if (value instanceof String) {
   }

  }

  
public String getDefaultMessage() {
   
return "{%0}不能为空!";
  }

 }


 





http://www.niftyadmin.cn/n/3648077.html

相关文章

小程序动画从头开始_如何从头开始在Kubernetes上部署弹性Node.js应用程序

小程序动画从头开始视频 (Video) 描述 (Description) You may have heard the buzz around Kubernetes and noticed that many companies have been rapidly adopting it. Due to its many components and vast ecosystem it can be quite confusing to find where the path st…

在easyjweb应用中关于acegi安全配置的增强

在easyjweb的应用程序中&#xff0c;我们习惯通过easyJWebCommand这一参数来指定服务器端控制器的执行命令。比如newsDocManage.ejf?easyJWebCommandedit&id1&#xff0c;将执行NewsDocManageAction中的doEdit方法。在acegi中&#xff0c;最简单也是最常用的权限控制是基于…

debian docker_如何在Debian 10上使用Docker和Caddy远程访问GUI应用程序

debian docker介绍 (Introduction) Even with the growing popularity of cloud services, the need for running native applications still exists. 即使云服务越来越流行&#xff0c;仍然需要运行本机应用程序。 By using noVNC and TigerVNC, you can run native applicat…

[挑战MVC极限]EasyJWeb-1.0特性抢先看之一简介

序  2006年&#xff0c;一群Java领域的大师们纷纷转向动语言&#xff0c;随着类似RoR这些框架的宣传及推广&#xff0c;我们发现动态语言确实带来了以前在Java的领域里面不曾有的思想、东西。使用传统的Java MVC框架做开发&#xff0c;相对于动态语言所表现出来的灵活、敏捷&…

debian docker_如何在Debian 9上使用Docker和Caddy远程访问GUI应用程序

debian docker介绍 (Introduction) Even with the growing popularity of cloud services, the need for running native applications still exists. 即使云服务越来越流行&#xff0c;仍然需要运行本机应用程序。 By using noVNC and TigerVNC, you can run native applicat…

[挑战MVC极限]EasyJWeb-1.0特性之二-快速体验

这是[挑战MVC极限]EasyJWeb-1.0特性抢先看系列的第二篇文章&#xff0c;今天通过一个Spring2JPA(Hibernate3.2)EasyJWeb添删改查的示例&#xff0c;让你通过两分钟的时候快速进入到EasyJWeb快速开发的体验中。EasyJWeb作为一个开源项目&#xff0c;我们首先来看看与其相关的资源…

如何在Python 3中使用pathlib模块处理文件系统路径

The author selected the COVID-19 Relief Fund to receive a donation as part of the Write for DOnations program. 作者选择了COVID-19救济基金来接受捐赠&#xff0c;这是Write for DOnations计划的一部分。 介绍 (Introduction) Python 3 includes the pathlib module f…

EasyJWeb-1.0 m1版正式发布

经过将近半年的努力&#xff0c;EasyJWeb开发小组非常高兴地在此向大家宣布&#xff0c;EasyJWeb-1.0 m1版正式对外发布&#xff0c;欢迎广大的开源爱好者下载使用。EasyJWeb-1.0版本包括以下功能&#xff1a;  1、重新对EasyJWeb的文档进行了修改&#xff0c;提供了较为完善…