jsf1.2/facelet1.x 中convertor的自定义
来源:互联网 发布:抹灰网络布规格型号 编辑:程序博客网 时间:2024/05/17 04:55
第一步,先定义一个validator继承jsf中的validator,如果需要有状态就必须实现StateHolder接口
package com.xx.web.validator;import javax.faces.component.StateHolder;import javax.faces.component.UIComponent;import javax.faces.context.FacesContext;import javax.faces.validator.Validator;import javax.faces.validator.ValidatorException;public class NumberValidator implements Validator, StateHolder {private int precision = 10;private int scale = 6;private boolean mustPositive = true;public NumberValidator() {}public void setPrecision(int precision) {this.precision = precision;}public void setScale(int scale) {this.scale = scale;}public void setMustPositive(Boolean mustPositive) {this.mustPositive = mustPositive;}@Overridepublic void validate(FacesContext context, UIComponent component,Object value) throws ValidatorException {<span style="white-space:pre"></span>//这里是具体验证的逻辑}@Overridepublic Object saveState(FacesContext context) {Object values[] = new Object[3];values[0] = precision;values[1] = scale;values[2]=mustPositive;return (values);}@Overridepublic void restoreState(FacesContext context, Object state) {Object values[] = (Object[]) state;precision = (Integer) values[0];scale = (Integer) values[1];mustPositive=(Boolean)values[2];}@Overridepublic boolean isTransient() {return false;}@Overridepublic void setTransient(boolean newTransientValue) {}}
在faces-confg.xml中添加以下代码
<validator> <validator-id>numberValidator</validator-id> <validator-class>com.xx.web.validator.NumberValidator</validator-class></validator>
到此为止validator已经可以使用了
<h:inputText>
<f:validator validatorId='numberValidator'></f:validator>
</h:inputText>
但是上面的参数无法添加
因为我们使用了facelet,所以要定义一个facelet的tag
package com.xx.web.validator;import javax.faces.validator.Validator;import com.sun.facelets.FaceletContext;import com.sun.facelets.tag.TagAttribute;import com.sun.facelets.tag.jsf.ValidateHandler;import com.sun.facelets.tag.jsf.ValidatorConfig;public class NumberValidatorHandler extends ValidateHandler {private final TagAttribute precisionAttr;private final TagAttribute scaleAttr;private final TagAttribute mustPositiveAttr;public NumberValidatorHandler(ValidatorConfig config) {super(config);precisionAttr = this.getAttribute("precision");scaleAttr = this.getAttribute("scale");mustPositiveAttr = this.getAttribute("mustPositive");}@Overrideprotected Validator createValidator(FaceletContext ctx) {NumberValidator result = (NumberValidator) ctx.getFacesContext().getApplication().createValidator("number");if (precisionAttr != null)result.setPrecision(Integer.valueOf(precisionAttr.getValue(ctx)));if (scaleAttr != null)result.setScale(Integer.valueOf(scaleAttr.getValue(ctx)));if (mustPositiveAttr != null)result.setMustPositive(Boolean.valueOf(mustPositiveAttr.getValue(ctx)));return result;}}然后在taglib.xml中加入
<tag><tag-name>validateNumber</tag-name><validator><validator-id>number</validator-id><handler-class>com.xx.validator.NumberValidatorHandler</handler-class></validator></tag>
使用方法
<xx:inputText label="xxx"style="width:220px;"value="#{xx.xxValue}"><xx:validateNumber precision="2" scale="3"></jd:validateNumber></xx:inputText>
0 0
- jsf1.2/facelet1.x 中convertor的自定义
- JSF1.2自定义EmailTag的开发
- JSF1.2自定义标签
- JSF1.2的变化
- JSF1.2的新特性
- 我做的JSF1.2的PPT
- JSF1.2技术的新特性总结
- JSF1.2+Facelets1.1.13遇到的问题
- jsf1.2得到ManagedBean的方法
- Apache MyFaces(JSF1.2)的介绍
- JSF1.2 规范 ---请求处理的生命周期
- jsf1.2 和 jsf2.0 的区别
- jsf1.2 规范
- JSF1.2学习笔记
- JSF1.2上传下载
- JSF1.2组件 基于DIV+CSS的Tree
- MyEclipse7.0+tomcat6.x+jdk6.0(JSF1.2)入门-环境搭建错误排查
- 在eclipse3.4中,使用tomcat6作为container,开发jsf1.2-web
- 各位支招,在上海搞开发,是外包,想离职,又想先找对象结婚,算晚婚,婚假好长20天左右
- Dev导出到Excel(带样式)
- 第八周项目三多分段函数求值2
- Android之ListView原理学习与优化总结
- 黑马程序员-for循环嵌套及break,continue
- jsf1.2/facelet1.x 中convertor的自定义
- C#-form起始位置---ShinePans
- 基于opencv的人脸检测程序
- 怎样练习写作[茅盾]
- 第八周项目六 本月有几天
- zoj3826 模拟
- quartz的几大组建
- codeforces Round #274(div2) E解题报告
- 剑指GOOGLE----论研究生程序员在互联网公司面试前的准备