Java Server Faces(JSF)___验证器,validate标记实现,实现Validator接口
前言:
这个内容其实也很简单,跟 JSF转换器应用几乎相同。
验证器一般用于和UI组件相关联;
1.使用标准转换器
- 主要的标记有:
<c:validateDoubleRange> <c:validateLength> <c:validateLongRange> <c:validateRequired> <c:validateRegex>
注:除了<c:validateRegex>、<c:validateRequired>标记以外,其余验证器标记都包含两个属性:minimum 和 maximum,用于表示用户输入数值的范围。
- 例如:
<h:inputText value="#{beanName.property}" validatorMessage = "error message"> <c:validateLongRange minimum="200" maximum="1000" /> </h:inputText>
2.实质:就是跟UI组件搭配使用,常用来处理用户输入的数据;
-
比如:验证用户输入的数值范围为100~200
<h:inputText value="#{beanName.property}" validatorMessage = "error message"> <c:validateLength minimum="100" maximum="200" /> </h:inputText>
3.创建自定义转换器:
注:除了JSF里面的内置转换器,你还可以创建自定义转换器;
-
实现步骤
(1).实现 Validator 接口,重写 validat() 方法;
(2).将该类注册为自定义验证器 ;
(3).与 UI组件 相关联 ;void validate(FaceContext context,UIComponent component,Object value):此方法用于编写逻辑代码,实现自定义验证;
-
定义自定义类 (bean)
public class myValidator implements Validator{ public myValidator() { // TODO Auto-generated constructor stub } public void validate(FaceContext context,UIComponent component,String newValue) throws ConverterException { //逻辑代码放在这; }
-
注册成为自定义转换器(有两种方式供选择)
第一种:在 face.config.xml 中进行配置
<validator> <validator-id></validator-id> //自己定义的id,用于跟 UI 组件相关联; <validator-class></validator-class> //自己定义的类名; </validator>
第二种:在类之前添加批注@FacesValidator( value = " 自己定义的id,用于跟UI 组件绑定");使用批注时,需要导入相应的包;
@FacesValidator( value = " 自己定义的id,用于跟UI 组件绑定");
-
将转换器添加到 UI 组件
1.使用用户界面的converter属性;<h:inputText value="#{beanName.property}" validator="validator.id"></h:inputText>
2.使用< converter >标记
<h:inputText value="#{beanName.property}"> <c:validator validatorId="validator.id" /> </h:inputText>
4.案例( 编写自定义转换器, )
-
实现Validator接口
public class myValidator implements Validator{ public myValidator() { // TODO Auto-generated constructor stub } public void validate(FaceContext context,UIComponent component,String newValue) throws ValidatorException { Date expDate = (Date)value; Date current = new Date(); if(expDate.compareTo(current) <= 0) { FacesMessage message = new FacesMessage(); message.setSummary("Invalid card!"); message.setServerity(FacesMessage.SEVERITY_ERROR); throw new ValidatorException(message); } } }
-
将该类注册为自定义转换器在 (* 在face.config.xml 中进行配置* )
<validator> <validator-id>myValidator</validator-id> //自己定义的id,用于跟 UI 组件相关联; <validator-class>myValidator</validator-class> //自己定义的类名; </validator>
-
将自定义转换器跟UI组件相关联
<h:inputText value="#{beanName.property}" validator="myValidator"></h:inputText>
注:这里只是用了第一种方式来进行自定义转换器的应用,第二种方式也很简单,这里就不在举例。
更多详细的内容,请查看:
link(https://blog.csdn.net/u012889434/article/details/50635891).