Tag Personalizada, muito simples. [RESOLVIDO]

4 respostas
2

Galera, li uma matéria em uma revista explicando como fazer uma tag personalizada. Eu uso JSF + JSP + richFaces e queria fazer algumas tags personalizadas para facilitar o uso de alguns componentes em conjunto.

O problema é que não consegui fazer uma nenhum exemplo funcionar.

A estrutura que falaram pra ser criada é a seguinte:

1º -> manipulador de Tags - java

2º -> descritor de biblioteca TLD - arquivo xml

3º -> registrar esse descritor de biblioteca no web.xml


o primeiro passo eu fiz, sem problema algum, e o segundo também. Quando eu tento registrar no arquivo web.xml, o seguinte erro aparece:

<?xml version="1.0"?>
<web-app version="2.4" 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 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 
 <display-name>Custom Tag</display-name>
<!--*******************************************************************************************************-->
O ERRO É NESSA LINHA. O web.xml NÃO RECONHECE ESSA TAG ABAIXO - <taglib>
<taglib>
  <taglib-uri>/myTagLib</taglib-uri>
  <taglib-location>/WEB-INF/myTagLib.tld</taglib-location>
</taglib>
<!--*******************************************************************************************************-->

 
 <context-param>
  <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  <param-value>server</param-value>
 </context-param>
 <listener>
  <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
 </listener>
 <!-- Faces Servlet -->
 <servlet>
  <servlet-name>Faces Servlet</servlet-name>
  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 
 <!-- Faces Servlet Mapping -->
 <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.jsf</url-pattern>
 </servlet-mapping>
 <login-config>
  <auth-method>BASIC</auth-method>
 </login-config>

</web-app>

Se alguém já fez alguma tag personalizada, ou sabe o pq desse erro me ajuda por favor…

desde já muito obrigado…

até…

4 Respostas

V

22-Gers:
Galera, li uma matéria em uma revista explicando como fazer uma tag personalizada. Eu uso JSF + JSP + richFaces e queria fazer algumas tags personalizadas para facilitar o uso de alguns componentes em conjunto.

O problema é que não consegui fazer uma nenhum exemplo funcionar.

A estrutura que falaram pra ser criada é a seguinte:

1º -> manipulador de Tags - java

2º -> descritor de biblioteca TLD - arquivo xml

3º -> registrar esse descritor de biblioteca no web.xml


o primeiro passo eu fiz, sem problema algum, e o segundo também. Quando eu tento registrar no arquivo web.xml, o seguinte erro aparece:

<?xml version="1.0"?>
<web-app version="2.4" 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 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 
 <display-name>Custom Tag</display-name>
<!--*******************************************************************************************************-->
O ERRO É NESSA LINHA. O web.xml NÃO RECONHECE ESSA TAG ABAIXO - <taglib>
<taglib>
  <taglib-uri>/myTagLib</taglib-uri>
  <taglib-location>/WEB-INF/myTagLib.tld</taglib-location>
</taglib>
<!--*******************************************************************************************************-->

 
 <context-param>
  <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  <param-value>server</param-value>
 </context-param>
 <listener>
  <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
 </listener>
 <!-- Faces Servlet -->
 <servlet>
  <servlet-name>Faces Servlet</servlet-name>
  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 
 <!-- Faces Servlet Mapping -->
 <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.jsf</url-pattern>
 </servlet-mapping>
 <login-config>
  <auth-method>BASIC</auth-method>
 </login-config>

</web-app>

Se alguém já fez alguma tag personalizada, ou sabe o pq desse erro me ajuda por favor…

desde já muito obrigado…

até…

Cara, eu estava estudando isso agora a pouco.
Use ao invés de .
E não se esqueça do e .

EDIT: hmm. Acho que não é isso.

J

a tag tem que estar dentro da tag
antes não era assim…
isso foi alterado na especificação servlet 2.4

2

Valew Jukkinha, era isso mesmo… agora ficou assim:

<jsp-config>
  <taglib>
   <taglib-uri>/myTagLib</taglib-uri>
   <taglib-location>/WEB-INF/myTagLib.tld</taglib-location>
  </taglib>
</jsp-config>

Valew por terem respondido… abraços…

R

sinceramente, acho que não pode existir algo mais complicado do que construir uma tag personalizada para JSF. Seria perfeito se viesse acompanhado da frase “Não tente fazer isso em casa!”.

É claro que existe uma grande diferença entre uma verdadeira tag, construida com extends UIComponentTag, e estas pseudo-tags com include e que são, na verdade, tags de meia tigela.

Criado 12 de maio de 2008
Ultima resposta 20 de fev. de 2011
Respostas 4
Participantes 4