Предлагаемое решение не работает, а также слишком сложно. В JSF 1.2 нет необходимости в классе обработчика и вообще не поддерживается класс обработчика в теге валидатора.
Так что все, что вам нужно, это.
Валидатор:
public class CustomValidator implements Validator, Serializable
{
private static final long serialVersionUID = ...;
private String someAttribute;
public void setSomeAttribute(String someAttribute)
{
this.someAttribute = someAttribute;
}
@Override
public void validate(FacesContext context, UIComponent component, Object value)
throws ValidatorException
{
// Do validation
}
}
Объявление / регистрация пользовательского валидатора вface-config.xml
<validator>
<validator-id>customValidator</validator-id>
<validator-class>package.CustomValidator</validator-class>
</validator>
Taglib.xml (например, my.taglib.xml):
<?xml version="1.0"?>
<!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>
<namespace>http://myNS.com/jsf</namespace>
<tag>
<tag-name>myCustomValidator</tag-name>
<validator>
<validator-id>customValidator</validator-id>
</validator>
</tag>
</facelet-taglib>
Наконец-то регистрация taglib.xml в web.xml:
<context-param>
<param-name>facelets.LIBRARIES</param-name>
<param-value>/WEB-INF/my.taglib.xml</param-value>
</context-param>
Так что все это не нужно обработчик: -)