Reproveitando xhtml entre projetos web

Uma maneira de deixar um xhtml reutilizável entre projetos java é utilizando taglib, assim tornando o xhtml em um component facelet que pode ser reaproveitado.

Criação da taglib

Criar um projeto quick-start do maven para gerar um taglib.jar e ser adicionado nas dependências dos projetos para a utilização o xhtml compartilhado.
Console/terminal

mvn archetype:generate -DgroupId=br.com.emmanuelneri 
    -DartifactId=taglib 
    -DarchetypeArtifactId=maven-archetype-quickstart 

Adicionar a dependencia do jsf-facelets para criação de componentes facelets.
taglib/pom.xml

<dependency>
    <groupId>com.sun.facelets</groupId>
    <artifactId>jsf-facelets</artifactId>
    <version>1.1.11</version>
</dependency>

Dentro da pasta resources/META-INF criar um arquivo bar.taglib.xml, que é o arquivo de configuração da taglib.
taglib/src/main/resources/META-INF/bar.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>https://emmanuelneri.com.br/commons-layout</namespace>

  <tag>
    <tag-name>topBar</tag-name>
    <source>components/topBar.xhtml</source>
  </tag>

</facelet-taglib>
  • namespace: url de acesso a taglib;
  • tag: cada tag não é um componente;
  • tag-name: tag que será referenciada no xhtml;
  • source: localização do que será chamado.

Ainda dentro da pasta resources/META-INF criar uma pasta components para organizar os xhtmls que serão chamados na taglib.
Na pasta components criar o arquivo barTop.xhtml, que será o arquivo o xhtml chamado pela taglib.
taglib/src/main/resources/META-INF/componets/barTop.xhtml

<jsp:root version="2.0" 
    xmlns:c="http://java.sun.com/jstl/core"  
    xmlns:f="http://java.sun.com/jsf/core"        
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:jsp="http://java.sun.com/JSP/Page"    
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns="http://www.w3.org/1999/xhtml">
          
  <ui:component>
     <h1>Top Bar</h1>
  </ui:component>
</jsp:root>
Observação
O conteudo a ser apresentado deve estar dentro da tag ui:component.

Utilização

Adicionar a taglib na dependencia de um projeto web.
web/pom.xml

<dependency>
    <groupId>br.com.emmanuelneri</groupId>
    <artifactId>taglib</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

E por fim utilizar nos xhtml necessários.
web/webapp/index.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
         xmlns:commons-layout="https://emmanuelneri.com.br/commons-layout">

    <commons-layout:topBar " />

<html/>
Observação
Para que o outro projeto encontre a taglib, o arquivo taglib.jar deve estar dentro do webapp/WEB-INF/lib
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.