Tiles - JSF

3 respostas
E

Estou tentando intender o tiles no JSF

ex: quando eu crio uma “definition”

<definition name="/homeCadastro.tiles" .............

que lugar que eu chamo isto?

em uma jsp?

como funciona isto?

3 Respostas

wbdsjunior

sim.

faça uma referência no JSP, mais ou menos assim:

/WEB-INF/tiles-defs.xml
...
<tiles-definitions> 
 <definition name="template" path="/WEB-INF/jsp/template.jsp"> 
  <put name="header" value="/WEB-INF/jsp/header.jsp" /> 
  <put name="menu" value="/WEB-INF/jsp/menu.jsp" /> 
  <put name="content" value="" />
  <put name="footer" value="/WEB-INF/jsp/footer.jsp" /> 
 </definition>
</tiles-definitions>
/WEB-INF/jsp/template.jsp
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 
<%@ taglib uri="apache.org/tags-tiles" prefix="tiles" %>
<html>
...
 <table> 
  <tr>
   <td colspan="2">
    <tiles:insert attribute="header" />
   </td>
  </tr>
  <tr>
   <td>
    <tiles:insert attribute="menu" />
   </td>
   <td>
    <tiles:insert attribute="corpo" />
   </td>
  </tr>
  <tr>
   <td colspan="2"> 
    <tiles:insert attribute="rodape" />
   </td>
  </tr>
 </table>
...
</html>
/WEB-INF/jsp/header.jsp
<h1>Header</h1>
/WEB-INF/jsp/menu.jsp
<table>
 <td>
  <td>
   <h2>Menu<h2>
  </td>
  <td>
   <a href="/um/index.jsp">Um</a><br />
  </td>
  <td>
   <a href="/dois/dois.jsp">Dois</a><br />
  </td>
  <td>
   <a href="/index.jsp">Home</a><br />
  </td>
 </tr> 
</table>
/WEB-INF/jsp/footer.jsp
<p>Footer</p>
/jsp/index.jsp
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 
<%@ taglib uri="apache.org/tags-tiles" prefix="tiles" %>
<tiles:insert definition="template"> 
 <tiles:put name="content" type="string"> 
  <h2>Content</h2>
 </tiles:put>
</tiles:insert>
E

wbdsjunior

Muito obrigado pela ajuda, porem ainda tem uns pontos que não intendi

por exemplo aqui voce faz

/jsp/index.jsp 
view plaincopy to clipboardprint?
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>   
<%@ taglib uri="apache.org/tags-tiles" prefix="tiles" %>  
<tiles:insert definition="template">   
<tiles:put name="content" type="string">   
  <h2>Content</h2>  
</tiles:put>  
</tiles:insert>

vc esta inserindo a pagina templade … porem qual funcionalidade de tiles:put

o que acontece aqui

<tiles:put name="content" type="string">   
  <h2>Content</h2>  
</tiles:put>

outra obs: aqui vc mapeia como header , menu, content, footer, porem depois na hora de inserir vc chama de header , menu , corpo ,rodape

nao precisa ser com o mesmo nome?

wbdsjunior

aqui…

&lt;tiles:put name="content" type="string"&gt; &lt;h2&gt;Content&lt;/h2&gt; &lt;/tiles:put&gt;
… rola como no facelets. você substitui o conteudo de content pelo o que está entre a tag tiles:put.

erickfm8:
outra obs: aqui vc mapeia como header , menu, content, footer, porem depois na hora de inserir vc chama de header , menu , corpo ,rodape

nao precisa ser com o mesmo nome?


sim, sim. é que copiei de um sistema que temos aqui e adaptei para o padrão de nome do facelets (que particularmente gosto mais) de outro sistema que também temos aqui.

corrigindo…

&lt;%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %&gt; &lt;%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %&gt; &lt;html&gt; ... &lt;table&gt; &lt;tr&gt; &lt;td colspan="2"&gt; &lt;tiles:insert attribute="header" /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;tiles:insert attribute="menu" /&gt; &lt;/td&gt; &lt;td&gt; &lt;tiles:insert attribute="content" /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2"&gt; &lt;tiles:insert attribute="footer" /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; ... &lt;/html&gt;

Criado 11 de outubro de 2011
Ultima resposta 11 de out. de 2011
Respostas 3
Participantes 2