Создать пользовательский тег для валидатора в 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 ответа

Для этого нужно выполнить следующие шаги:

  1. Напишите свой собственный тег в виде файла xhtml

  2. Создайте файл 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>
    
  3. Зарегистрируйтесь в web.xml

     <context-param>
        <param-name>facelets.LIBRARIES</param-name>
        <param-value>/WEB-INF/taglib.xml</param-value>
     </context-param>
    
  4. Используйте свой пользовательский тег, включив 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

Другие вопросы по тегам