最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

jsf1.2/facelet1.x中convertor的自定义

来源:懂视网 责编:小采 时间:2020-11-09 15:57:23
文档

jsf1.2/facelet1.x中convertor的自定义

jsf1.2/facelet1.x中convertor的自定义:第一步,先定义一个validator继承jsf中的validator,如果需要有状态就必须实现StateHolder接口 package com.xx.web.validator;import javax.faces.component.StateHolder;import javax.faces.component.UIComp
推荐度:
导读jsf1.2/facelet1.x中convertor的自定义:第一步,先定义一个validator继承jsf中的validator,如果需要有状态就必须实现StateHolder接口 package com.xx.web.validator;import javax.faces.component.StateHolder;import javax.faces.component.UIComp

第一步,先定义一个validator继承jsf中的validator,如果需要有状态就必须实现StateHolder接口 package com.xx.web.validator;import javax.faces.component.StateHolder;import javax.faces.component.UIComponent;import javax.faces.context.FacesContext

第一步,先定义一个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;
	}

	@Override
	public void validate(FacesContext context, UIComponent component,
	Object value) throws ValidatorException {
	//这里是具体验证的逻辑
	}

	@Override
	public Object saveState(FacesContext context) {

	Object values[] = new Object[3];
	values[0] = precision;
	values[1] = scale;
	values[2]=	mustPositive;
	return (values);

	}
	@Override
	public void restoreState(FacesContext context, Object state) {

	Object values[] = (Object[]) state;
	precision = (Integer) values[0];
	scale = (Integer) values[1];
	mustPositive=(Boolean)values[2];

	}

	@Override
	public boolean isTransient() {
	return false;
	}

	@Override
	public void setTransient(boolean newTransientValue) {

	}

}

在faces-confg.xml中添加以下代码


 numberValidator
 com.xx.web.validator.NumberValidator

到此为止validator已经可以使用了

但是上面的参数无法添加

因为我们使用了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");
	}

	@Override
	protected 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中加入


	validateNumber
	
	number
	com.xx.validator.NumberValidatorHandler
	
	

使用方法


	
	

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

jsf1.2/facelet1.x中convertor的自定义

jsf1.2/facelet1.x中convertor的自定义:第一步,先定义一个validator继承jsf中的validator,如果需要有状态就必须实现StateHolder接口 package com.xx.web.validator;import javax.faces.component.StateHolder;import javax.faces.component.UIComp
推荐度:
标签: 自定 转换器 jsf1.2
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top