在JSF中生成自定义标签的方法
写tld文件:
基本格式如下,
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">
<tlib-version>1.0</tlib-version>
<short-name>mytag</short-name>
*在jsp文件生命中使用的标签名
<uri>http://dotag.com/jsf/taglib</uri>
*uri指向jsp的taglib项中声明的uri,jsp解析并比对uri寻找在WEB-INF目录下的tld文件,读取tag
*的属性,见下文
<tag>
<name>validateForApp</name>
<tag-class>com.dotag.taglib.ValidateForApp</tag-class>
*指向tag具体的class文件
<body-content>empty</body-content>
*tag的body中无内容
<attribute>
<name>para_for_validate</name>
*tag中定义的属性,在class文件中必须有相应的实现方式
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>
类文件ValidateForApp的内容
import javax.faces.application.Application;
...
/**
*
* @author ustc 张银叶
*/
public class ValidateForApp extends ValidatorTag{
/*
* JSF中提供了一个ValidatorTag的基类,继承ValidatorTag,
* 只需要实现createValidator()函数即可
*/
private String str;
/*
* 接受tag的属性值
*/
public void setPara_for_validate(String str){
this.str = str;
}
protected Validator createValidator(){
/*
* 这里可以写你需要的验证过程;
* 也可以在其它的地方实现,JSF中提供Validator的接口类
* 你需要做的是补充它内部的validate的函数;
*/
...
}
}