"Template" + JSP's

Olá

Bem, eu tenho um “index.jsp” e vários formulários…

A página index será o meu template, que em uma determinada área da página serão chamados os outros JSPs (formulários)…

Qual é a melhor e mais prática ferramenta usada para fazer isso?

Obrigado

existem vários gerenciadores de templates, por exemplo:

http://tiles.apache.org/
http://velocity.apache.org/

atualmente tenho estudado o mentawai, que também fornece essa feature.
http://www.mentaframework.org

olha facelets tmb

Opa

Obrigado…

encontrei uns artigos sobre o sitemesh e facelets… achei bem interessante

até +

olá

Estou tentando usar o Facelets… pois bem, minha aplicacao usa muitas paginas em .jsp… mas o facelets só “funciona”, roda, em arquivos .xhtml…

e eu não estou afim de alterar TODOS os arquivos (dezenas, centenas,milhares de arquivos) fora outras config…

Tem como modificar algo para que eu use somente jsp??

Minha ignorancia me guiou a alterar o arquivo web.xml

<context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>

para:

<context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.jsp</param-value>
    </context-param>

Mas ao executar a aplicacao dá um erro em uma taglig…

Por exemplo, no xhtml está:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html">

eu tentei fazer isso:

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@taglib uri="http://java.sun.com/jsf/facelets" prefix="ui"%>

mas aparece um erro na última linha da taglib:

cannot be resolved in either web.xml or the jar files deployed with this application

pois bem, preciso saber se é possível usar esse framework no jsp… dessa forma… ouu se existe outra coisa que eu possa usar para que me ajude…

Obrigado

Senhoras e senhores

Realmente eu preciso da ajuda de vocês…

Vou tentar explicar da melhor forma possível:

Criei um projeto Web, usando os recursos do Netbeans 6.1, (Classes de entidades do banco de dados e Páginas JSF de classes de entidades) - JEITO FACIL NETBEANS;

É criado 4 arquivos: Edit.jsp, New.jsp, List.jsp, Detail.jsp - para cada entidade (no meu projeto são 47 entidades);

New.jsp

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>New TipoDespesa</title>
</head>
<body>
<f:view>
  <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/>
 <h1>New TipoDespesa</h1>
<h:form>
  <h:inputHidden id="validateCreateField" validator="#{tipoDespesa.validateCreate}" value="value"/>
 <h:panelGrid columns="2">
<h:outputText value="Codigo:"/>
<h:inputText id="codigo" value="#{tipoDespesa.tipoDespesa.codigo}" title="Codigo" required="true" requiredMessage="The codigo field is required." />
<h:outputText value="Descricao:"/>
<h:inputText id="descricao" value="#{tipoDespesa.tipoDespesa.descricao}" title="Descricao" required="true" requiredMessage="The descricao field is required." />
</h:panelGrid>
<br />
<h:commandLink action="#{tipoDespesa.create}" value="Create"/>
<br />
<br />
<h:commandLink action="#{tipoDespesa.listSetup}" value="Show All TipoDespesa Items" immediate="true"/>
 <br />
<a href="/WebApplication1/faces/welcomeJSF.jsp">Index</a>
</h:form>
 </f:view>
</body>
</html>

List.jsp

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Listing TipoDespesa Items</title>
</head>
<body>
<f:view>
  <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/>
 <h1>Listing TipoDespesa Items</h1>
<h:form>
<h:outputText escape="false" value="(No TipoDespesa Items Found)<br />" rendered="#{tipoDespesa.itemCount == 0}" />
<h:panelGroup rendered="#{tipoDespesa.itemCount > 0}">
<h:outputText value="Item #{tipoDespesa.firstItem + 1}..#{tipoDespesa.lastItem} of #{tipoDespesa.itemCount}"/>&nbsp;
<h:commandLink action="#{tipoDespesa.prev}" value="Previous #{tipoDespesa.batchSize}" rendered="#{tipoDespesa.firstItem >= tipoDespesa.batchSize}"/>&nbsp;
<h:commandLink action="#{tipoDespesa.next}" value="Next #{tipoDespesa.batchSize}" rendered="#{tipoDespesa.lastItem + tipoDespesa.batchSize <= tipoDespesa.itemCount}"/>&nbsp;
<h:commandLink action="#{tipoDespesa.next}" value="Remaining #{tipoDespesa.itemCount - tipoDespesa.lastItem}"
rendered="#{tipoDespesa.lastItem < tipoDespesa.itemCount && tipoDespesa.lastItem + tipoDespesa.batchSize > tipoDespesa.itemCount}"/>
<h:dataTable value='#{tipoDespesa.tipoDespesas}' var='item' border="0" cellpadding="2" cellspacing="0" rowClasses="jsfcrud_oddrow,jsfcrud_evenrow" rules="all" style="border:solid 1px">
<h:column>
 <f:facet name="header">
 <h:outputText value="Codigo"/>
 </f:facet>
 <h:outputText value=" #{item.codigo}"/>
</h:column>
<h:column>
 <f:facet name="header">
 <h:outputText value="Descricao"/>
 </f:facet>
 <h:outputText value=" #{item.descricao}"/>
</h:column>
<h:column>
 <f:facet name="header">
 <h:outputText escape="false" value="&nbsp;"/>
 </f:facet>
<h:commandLink value="Show" action="#{tipoDespesa.detailSetup}">
<f:param name="jsfcrud.currentTipoDespesa" value="#{tipoDespesa.asString[item]}"/>
</h:commandLink>
  <h:outputText value=" "/>
<h:commandLink value="Edit" action="#{tipoDespesa.editSetup}">
<f:param name="jsfcrud.currentTipoDespesa" value="#{tipoDespesa.asString[item]}"/>
</h:commandLink>
  <h:outputText value=" "/>
<h:commandLink value="Destroy" action="#{tipoDespesa.destroy}">
<f:param name="jsfcrud.currentTipoDespesa" value="#{tipoDespesa.asString[item]}"/>
</h:commandLink>
 </h:column>
</h:dataTable>
</h:panelGroup>
<br />
<h:commandLink action="#{tipoDespesa.createSetup}" value="New TipoDespesa"/>
<br />
<a href="/WebApplication1/faces/welcomeJSF.jsp">Index</a>

</h:form>
</f:view>
</body>
</html>

O Netbeans me oferece “Link’s” no welcomeJSF.jsp:

<f:view>
            <h:form>
                <h1><h:outputText value="JavaServer Faces" /></h1>
                <br/>
                <h:commandLink action="#{tipoDespesa.listSetup}" value="Show All TipoDespesa Items"/>
            </h:form>
            
        </f:view>

até aí tudo ok. Clico no link do welcome e abre uma nova pagina (List.jsp) com o formulario…

Agora acreditem quando eu digo SEMANAS trabalhando nisso… encontrei isso:

1 frustação = Não consegui fazer funcionar com o Tomcat… só GlassFish

2 = Não achei framework que me ajudasse de maneira fácil e RÁPIDA, muito RÁPIDA a fazer um template.

Template = Tenho um layout com menus, substituindo os links… e um espaço para IR o formulário, ex: clicar no link do menu e em vez de abrir nova pagina, “pega” o formulário do dito List.jsp e mostra no espaço reservado…

3 = Tentei o Facelets… sem chance só funciona com xhtml e não conheço forma de fazer funcionar nesses JSP’s…

4 = Tentei o SiteMesh, não sei, parece que não funciona no GlassFish, nos tutoriais funcionam, mas não qdo quero utilizar o “JEITO FACIL NETBEANS”;

5 = O Tiles, Menta, Velocity, tentei entender e aplicar os tutoriais… mas são complicados demais… (minha opinião, antes de ver eles funcionando é claro) - Não segui adiante com esses…

Pois bem, gostaria de contar com a vossa experiência…

1 - Insistir nos Frameworks “dificeis”;

2 - Alternativa para o Facelets ou SiteMesh;

Desculpem a forma do post, mas preciso terminar esse meu TCC (Complexo)… e não quero desistir de usar template na minha aplicação depois de tanto tempo…

Obrigado