Создать пользовательский тег для валидатора в JSF
Я создал собственный валидатор для моего проекта JSF. Я могу использовать это так:
<h:inputText id="inpUsername" value="#{testbean.value}">
<f:validator validatorId="validators.TestValidator" />
</h:inputText>
Мне нужно создать собственный тег для него, чтобы я мог использовать его так:
<h:inputText id="inpUsername" value="#{testbean.value}">
<validators:myValidator />
</h:inputText>
Как я могу создать собственный тег для моего валидатора? Я использую Eclipse, JSF 2.0 и Glassfish
2 ответа
Для этого нужно выполнить следующие шаги:
Напишите свой собственный тег в виде файла xhtml
Создайте файл taglib.xml и добавьте запись для своего пользовательского тега / валидатора
<facelet-taglib> <namespace>http://anyurl.com/unique</namespace> <tag> <tag-name>myTag</tag-name> <source>tags/com/portal/myTag.xhtml</source> </tag> <tag> <tag-name>myValidator</tag-name> <validator> <validator-id>validators.TestValidator</validator-id> </validator> </tag </facelet-taglib>
Зарегистрируйтесь в web.xml
<context-param> <param-name>facelets.LIBRARIES</param-name> <param-value>/WEB-INF/taglib.xml</param-value> </context-param>
Используйте свой пользовательский тег, включив taglib
Вы должны создать тег в вашем taglib.xml
<tag>
<tag-name>myValidator</tag-name>
<validator>
<validator-id>validators.TestValidator</validator-id>
</validator>
</tag>
См. http://facelets.java.net/nonav/docs/dev/docbook.html
О taglib.xml: http://facelets.java.net/nonav/docs/dev/docbook.html