См. Создание пользовательского валидатора в JEE5 Tutorial . Раздел Создание пользовательского тега подробно описывает, как реализовать класс ValidatorELTag
.
for="myControl"
Я сомневаюсь, что вам понадобится этот атрибут (я не уверен, как бы вы его использовали). Валидатор будет установлен на родительский элемент управления. for
атрибуты обычно используются, только когда один элемент управления ссылается на другой, как в компоненте метки.
РЕДАКТИРОВАТЬ: я неправильно понял вопрос; ответ выше относится к JSP (те связанные с тегами классы в базовом JSF 1.2 предназначены только для JSP; Facelets имеет собственную систему тегов ; хорошая новость в том, что вам не нужен Java-класс специально для определения тег).
Пример валидатора:
public class RegexValidator implements Validator, StateHolder {
private boolean isTransient;
private String regex;
public String getRegex() { return regex; }
public void setRegex(String regex) { this.regex = regex; }
public void validate(FacesContext context, UIComponent component, Object value)
throws ValidatorException {
//TODO: throw ValidatorException if not valid
}
//TODO: implement remaining StateHolder methods...
}
Этот валидатор затем регистрируется в faces-config.xml
:
<validator>
<validator-id>regex.validator</validator-id>
<validator-class>val.RegexValidator</validator-class>
</validator>
Затем вы добавляете библиотеку тегов в приложение (например, WEB-INF/facelets/foo.taglib.xml
):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE facelet-taglib PUBLIC
"-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
"http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
<facelet-taglib xmlns="http://java.sun.com/JSF/Facelet">
<namespace>http://demo</namespace>
<tag>
<tag-name>regexValidator</tag-name>
<validator>
<validator-id>regex.validator</validator-id>
</validator>
</tag>
</facelet-taglib>
Добавьте объявление xmlns:demo="http://demo"
к любым представлениям Facelets, в которых вы хотите использовать библиотеку тегов; Ваш тег валидатора начнется в форме <demo:regexValidator ...
; атрибуты будут выбраны посредством самоанализа класса валидатора.