Pessoal eu sempre detestei usar JSP, sempre achei que era uma gambiarra, não sei por que ! posso até está enganado... iniciei meus estudos com xhtml e acho muito melhor e muito mais rápido....
Ggostaria que os colegas que são programadores e usam o VRaptor me fale como usar XHTML ou uma maneira de não usar JSP !
Obrigado.
*************************
EXEMPLO XHTML *
*************************
<?xml version="1.0" encoding="ISO-8859-1"?>
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<style type="text/css">
.ecol1 { vertical-align: top; padding-right : 25px }
.ecol2 { vertical-align: top; border-left: #ACBECE 1px solid; padding-left : 10px }
.rich-calendar-tool-btn{
font-family: Arial, Verdana;
}
</style>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<link rel="StyleSheet" type="text/css" href="../style/estilos.css" media="screen" />
</head>
<a4j:keepAlive beanName="clientesMB" />
<ui:composition template="/template/template.xhtml">
<ui:define name="corpo">
<rich:tabPanel switchType="ajax">
<rich:tab label="Cadastro de Clientes">
<a4j:form>
<rich:messages />
<legend>Cadastro de Clientes</legend>
<a4j:region id="regiaoAjax">
<a4j:status id="sts">
<f:facet name="start">
<h:graphicImage value="/images/ajax-loader_1.gif" />
</f:facet>
</a4j:status>
</a4j:region>
<!-- INICIA FORMULARIO-->
<fieldset>
<h:panelGrid columns="2" id="inputs">
<h:outputLabel for="id" value="Digite a CGC/CPF: " />
<h:inputText id="id" value="#{clientesMB.clientes.id}" >
</h:inputText>
<h:outputLabel for="nome" value="Digite o Nome: " />
<h:inputText id="nome" value="#{clientesMB.clientes.nome}" styleClass="edit" size="40">
</h:inputText>
<h:outputLabel for="endereco" value="Digite o Endereço: " />
<h:inputText id="endereco" value="#{clientesMB.clientes.endereco}" styleClass="edit" size="60" >
</h:inputText>
<h:outputLabel for="cep" value="Digite o CEP: " />
<h:inputText id="cep" value="#{clientesMB.clientes.cep}" >
</h:inputText>
<h:outputLabel for="cidade" value="Digite a Cidade: " />
<h:inputText id="cidade" value="#{clientesMB.clientes.cidade}" >
</h:inputText>
<h:outputLabel for="uf" value="UF.:"/>
<rich:comboBox defaultLabel="" id="uf" value="#{clientesMB.clientes.uf}" >
<f:selectItem itemValue="AC"/>
<f:selectItem itemValue="AL" />
<f:selectItem itemValue="AM" />
<f:selectItem itemValue="AP"/>
<f:selectItem itemValue="BA" />
<f:selectItem itemValue="CE" />
<f:selectItem itemValue="DF" />
<f:selectItem itemValue="ES"/>
<f:selectItem itemValue="FN"/>
<f:selectItem itemValue="GO" />
<f:selectItem itemValue="MA" />
<f:selectItem itemValue="MG" />
<f:selectItem itemValue="MS" />
<f:selectItem itemValue="MT" />
<f:selectItem itemValue="PA" />
<f:selectItem itemValue="PB" />
<f:selectItem itemValue="PE"/>
<f:selectItem itemValue="PI"/>
<f:selectItem itemValue="PR" />
<f:selectItem itemValue="RJ" />
<f:selectItem itemValue="RN"/>
<f:selectItem itemValue="RO" />
<f:selectItem itemValue="RR" />
<f:selectItem itemValue="RS"/>
<f:selectItem itemValue="SC" />
<f:selectItem itemValue="SE"/>
<f:selectItem itemValue="SP"/>
<f:selectItem itemValue="TO" />
</rich:comboBox>
<h:outputLabel for="contato" value="Digite o Contato: " />
<h:inputText id="contato" value="#{clientesMB.clientes.contato}" styleClass="edit" size="40">
</h:inputText>
<h:outputLabel for="tipo" value="Digite o Tipo: " />
<h:inputText id="tipo" value="#{clientesMB.clientes.tipo}" >
</h:inputText>
<h:outputLabel for="areaAtividade" value="Digite o AreaAtividade: " />
<h:inputText id="areaAtividade" value="#{clientesMB.clientes.areaAtividade}" styleClass="edit" size="40" >
</h:inputText>
<h:outputLabel for="fone" value="Digite o Fone: " />
<h:inputText id="fone" value="#{clientesMB.clientes.fone}" >
</h:inputText>
<h:outputLabel for="fax" value="Digite o Fax: " />
<h:inputText id="fax" value="#{clientesMB.clientes.fax}" >
</h:inputText>
<h:outputLabel for="cxPostal" value="Digite o Caixa/Postal: " />
<h:inputText id="cxPostal" value="#{clientesMB.clientes.cxPostal}" >
</h:inputText>
<h:outputLabel for="email" value="Digite o E-mail: " />
<h:inputText id="email" value="#{clientesMB.clientes.email}" styleClass="edit" size="40" >
</h:inputText>
<h:outputLabel for="insest" value="Digite o insest: " />
<h:inputText id="insest" value="#{clientesMB.clientes.insest}" >
</h:inputText>
<h:outputLabel for="celular" value="Digite o Celular: " />
<h:inputText id="celular" value="#{clientesMB.clientes.celular}" >
</h:inputText>
</h:panelGrid>
|<a4j:commandButton value="Salvar" action="#{clientesMB.save}" status="sts" reRender="inputs" styleClass="botoes"/>
|<a4j:commandButton value="Voltar" immediate="true" action="toIndex" styleClass="botoes"/>|
</fieldset>
<rich:messages />
<fieldset><legend>Atualização de Dados</legend>
<f:subview id="listauser">
<rich:dataTable value="#{clientesMB.clientess}" var="clientes" rows="30" id="clientess" width="100%" cellspacing="0" cellpadding="0" border="5">
<h:column>
<f:facet name="header">
<h:outputText value="Cliente/CG/CPF:" />
</f:facet>
<h:outputText value="#{clientes.id}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nome:" />
</f:facet>
<h:outputText value="#{clientes.nome}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Telefone:" />
</f:facet>
<h:outputText value="#{clientes.fone}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Celular:" />
</f:facet>
<h:outputText value="#{clientes.celular}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="E-mail:" />
</f:facet>
<h:outputText value="#{clientes.email}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Mostrar"/>
</f:facet>
<a4j:commandLink reRender="inputs,clientes,clientess" >
<h:outputText value="Mostrar"/>
<f:setPropertyActionListener value="#{clientes}" target="#{clientesMB.clientes}" />
</a4j:commandLink>
</h:column>
<f:facet name="footer">
<rich:datascroller />
</f:facet>
</rich:dataTable>
</f:subview>
</fieldset>
</a4j:form>
</rich:tab>
<rich:tab label="Pesquisa Clientes">
<a4j:form>
<fieldset>
<h:outputLabel for="id" value="Digite a CGC/CPF: " />
<h:inputText id="id" value="#{clientesMB.clientes.id}" styleClass="inputPesquisa" >
<a4j:commandButton value="Pesquisar" action="#{clientesMB.pesquisaById}" reRender="inputs,listauser,clientes,clientess">
</a4j:commandButton>
</h:inputText>
<h:outputLabel for="nome" value="Digite o Nome: " />
<h:inputText id="nome" value="#{clientesMB.clientes.nome}" styleClass="inputPesquisa">
<a4j:commandButton value="Pesquisar" action="#{clientesMB.pesquisaByNome}" reRender="inputs,listauser,clientes,clientess">
</a4j:commandButton>
</h:inputText>
</fieldset>
<fieldset>
<legend>Atualização de Dados</legend>
<f:subview id="listauser">
<rich:dataTable value="#{clientesMB.clientess}" var="clientes" rows="60" id="clientess" width="100%" cellspacing="0" cellpadding="0" border="5">
<h:column>
<f:facet name="header">
<h:outputText value="Cliente/CG/CPF:" />
</f:facet>
<h:outputText value="#{clientes.id}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nome:" />
</f:facet>
<h:outputText value="#{clientes.nome}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Telefone:" />
</f:facet>
<h:outputText value="#{clientes.fone}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Celular:" />
</f:facet>
<h:outputText value="#{clientes.celular}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="E-mail:" />
</f:facet>
<h:outputText value="#{clientes.email}" />
</h:column>
<f:facet name="footer">
<rich:datascroller />
</f:facet>
</rich:dataTable>
</f:subview>
</fieldset>
</a4j:form>
</rich:tab>
</rich:tabPanel>
</ui:define>
</ui:composition>
</html>
*************************
EXEMPLO JSP *
*************************
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@page contentType="text/html" pageEncoding="iso-8859-1"%>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<%@include file="../titulo.jsp" %>
<style type="text/css" media="screen">
<!--
@import URL("../css/estilos.css");
-->
</style>
</head>
<body topmargin="0" leftmargin="0" marginheight="0" marginwidth="0">
<table border="0" cellpadding="0" cellspacing="0" class="principal" id="principal">
<tr>
<td width="5%" height="138"><img /></td>
<td width="95%" rowspan="2" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="95%" bgcolor="#FFFFFF"><img /></td>
</tr>
<tr>
<td bgcolor="#edefea"><%@include file="menuUsuario.jsp" %></td>
</tr>
<tr>
<td><br/>
<div id="erros">
<ul>
<c:forEach items="${errors}" var="error">
<li>${error.category } - ${error.message }</li>
</c:forEach>
</ul>
</div>
<table class="tabela" width="80%" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#999999">
<thead>
<tr class="tabelaTitulo">
<th>Nome</th>
<th>Login</th>
<th width="70">Excluir</th>
<th width="60">Editar</th>
</tr>
</thead>
<% int i=0; %>
<tbody><c:forEach var="usuario" items="${usuarioList}">
<% i+=1;
if(i%2==0){
%>
<tr class="tabelaFonte" bgcolor="#eeeeee">
<td >${usuario.nome}</td>
<td align="center">${usuario.login}</td>
<td align="center"><form action="<c:url value="/usuario/${usuario.idUsuario}"/>" method="POST">
<input type="hidden" name="_method" value="delete" />
<input type="image" src="../img/delete.png" value="Enviar"/>
</form></td>
<td align="center"><a /usuario/${usuario.idUsuario}"/>"><img /></a></td>
</tr>
<% }else{
%>
<tr class="tabelaFonte">
<td >${usuario.nome}</td>
<td align="center">${usuario.login}</td>
<td align="center"><form action="<c:url value="/usuario/${usuario.idUsuario}"/>" method="POST">
<input type="hidden" name="_method" value="delete" />
<input type="image" src="../img/delete.png" value="Enviar"/>
</form></td>
<td align="center"><a /usuario/${usuario.idUsuario}"/>"><img /></a></td>
</tr>
<% }%>
</c:forEach>
</tbody>
</table></td>
</tr>
</table></td>
</tr>
<tr>
<td width="5%" height="680" valign="top" class="fundoMenu">
<%@include file="../menu.jsp" %></td>
</tr>
<tr>
<td colspan="3" valign="top" class="filRodape">
<%@include file="../rodape.jsp" %> </td>
</tr>
</table>
</body>
</html>