Vraptor - Convenção para o fluxo de navegação

8 respostas
L

Olá amigos, estava lendo um material sobre o Vraptor e, tomara que eu não esteja enganado, mas achei um framework que julgo ser realmente prático e eficaz.

Como estou aprendendo ainda, algumas coisas ficaram obscuras, por exemplo o fluxo de navegação. Quando uma action (usuario.adiciona.logic) é executada com sucesso, o Vraptor, direciona o usuário para uma página chamada, por exemplo, usuario/adiciona.ok.jsp.

Gostaria de saber como eu poderia fazer com que ao invés de direcionar o usuário para uma nova página, eu pudesse simplesmente colocar uma mensagem de “Registro Salvo Com Sucesso” na página do formulário, ou seja, na usuario.adiciona.logic. E quando isto falha, a lógica é a mesma? Só que manda para usuario/adiciona.error.jsp ?

Abraços…

8 Respostas

juniorsatanas

imagina que tu tem :

cliente

formulario.ok.jsp para cadastro
cadastro.invalid.jsp
cadastro.ok.jsp

quando tu da cliente.cadastra.logic, ai o Vraptor vai procurar no arquivo

views.propries

cliente.exclui.ok = cliente.listacliente.logic
cliente.atualiza.ok = cliente.listacliente.logic
cliente.atualizacliente.ok = cliente.listacliente.logic

cliente.atualiza.invalid = cliente.listacliente.logic
cliente.atualizacliente.invalidk = cliente.listacliente.logic

se o arquivo estiver em branco, ele procura o jsp.

meus fontes:

<%@page pageEncoding="Cp1252" contentType="text/html; charset=Cp1252" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Cadastro de Cliente</title>

<link rel="stylesheet" type="text/css" href="css/formulario.css"/>
</head>
<body>

<h1>Cliente.: ${param['cliente.nome']} : adicionado com sucesso!</h1>

<ul >
	&lt;c:forEach var="error" items="${errors.iterator}"&gt;
		<li>${error.key}</li>
	&lt;/c:forEach&gt;
</ul>
&lt;div id="login"&gt;
                    
        &lt;form id="logincad" method="post"  action="cliente.adiciona.logic"&gt;
        
            &lt;fieldset&gt;
            
            &lt;legend&gt;Bem Vindo ao SIGMP&lt;/legend&gt;
            
            &lt;label for="nome"&gt;Nome&lt;/label&gt;
            
            &lt;input type="text" name="cliente.nome" value="${cliente.nome}" size="40"/&gt;    
            <br />
            
            &lt;label for="nome"&gt;CPF&lt;/label&gt;
            
            &lt;input type="text" name="cliente.cpf" value="${cliente.cpf}" size="20"/&gt;    
            <br />
            
            &lt;label for="nome"&gt;RG&lt;/label&gt;
            
            &lt;input type="text" name="cliente.rg" value="${cliente.rg}" size="20"/&gt;    
            <br />
            &lt;label for="nome"&gt;Mãe&lt;/label&gt;
            
            &lt;input type="text" name="cliente.mae" value="${cliente.mae}" size="40"/&gt;    
            <br />
            
            &lt;label for="cidade"&gt;Endereço&lt;/label&gt;
            &lt;input type="text" name="cliente.endereco" value="${cliente.endereco}" size="40"/&gt;    
            
            <br />
            
            &lt;label for="cidade"&gt;Cidade&lt;/label&gt;
            &lt;input type="text" name="cliente.cidade" value="${cliente.cidade}" size="40"/&gt;    
            
            <br />
            
            
            &lt;label for="estado"&gt;Estado&lt;/label&gt;
            &lt;select name="estado" id="estado"&gt;
                &lt;option selected="selected"&gt;Selecione&lt;/option&gt;
                &lt;option value="AC"&gt;AC&lt;/option&gt;
                &lt;option value="AL"&gt;AL&lt;/option&gt;
                &lt;option value="AP"&gt;AP&lt;/option&gt;
                &lt;option value="AM"&gt;AM&lt;/option&gt;
                &lt;option value="BA"&gt;BA&lt;/option&gt;
                &lt;option value="CE"&gt;CE&lt;/option&gt;
                &lt;option value="DF"&gt;DF&lt;/option&gt;
                &lt;option value="ES"&gt;ES&lt;/option&gt;
                &lt;option value="GO"&gt;GO&lt;/option&gt;
                &lt;option value="MA"&gt;MA&lt;/option&gt;
                &lt;option value="MT"&gt;MT&lt;/option&gt;
                &lt;option value="MS"&gt;MS&lt;/option&gt;
                &lt;option value="MG"&gt;MG&lt;/option&gt;
                &lt;option value="PA"&gt;PA&lt;/option&gt;
                &lt;option value="PB"&gt;PB&lt;/option&gt;
                &lt;option value="PR"&gt;PR&lt;/option&gt;
                &lt;option value="PE"&gt;PE&lt;/option&gt;
                &lt;option value="PI"&gt;PI&lt;/option&gt;
                &lt;option value="RJ"&gt;RJ&lt;/option&gt;
                &lt;option value="RN"&gt;RN&lt;/option&gt;
                &lt;option value="RO"&gt;RO&lt;/option&gt;
                &lt;option value="RR"&gt;RR&lt;/option&gt;
                &lt;option value="RS"&gt;RS&lt;/option&gt;
                &lt;option value="SC"&gt;SC&lt;/option&gt;
                &lt;option value="SP"&gt;SP&lt;/option&gt;
                &lt;option value="SE"&gt;SE&lt;/option&gt;
                &lt;option value="TO"&gt;TO&lt;/option&gt;                
            &lt;/select&gt;                
            
            <br />
            
            &lt;label for="cidade"&gt;E-mail&lt;/label&gt;
            &lt;input type="text" name="cliente.email" value="${cliente.email}" size="20"/&gt;    
            
            <br />
                       
             &lt;label for="telefone"&gt;Telefone&lt;/label&gt;
            &lt;input type="text" name="cliente.email" value="${cliente.telefone}" size="20"/&gt;    
        
            <br />
            &lt;input type="submit" name="cadastrar" id="cadastrar" value="Cadastrar" /&gt;
             <a > &lt;title="Click para pesquisar: ${usuario.login}"/&gt;Lista de Clientes</a>   
            &lt;/fieldset&gt;
           
        &lt;/form&gt;
            
    &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
juniorsatanas

meu formulário.ok.jsp é igual ao adicionar.ok.jsp, mudando somente essa linha… toda vez que dou post no formulario, ele caregar o adicionar.ok.jsp, que é do mesmo modo, mais com as mensagens…

da pra fazer isso de várias maneiras, ehheheh

# &lt;h1&gt;Cliente.: ${param['cliente.nome']} : adicionado com sucesso!&lt;/h1&gt;  
#
L

Obrigado pela atenção xará…

Deixa eu ver se entendi ?

Vc tem dois JSP praticamente iguais, a única diferença entre os dois arquivos jsp é o

Cliente.: ${param[‘cliente.nome’]} : adicionado com sucesso!

.

Depois de salvo, vc direciona para está página “clone” populando os campos com os valores informados na página de origem, é isto ?

Mas desta forma não tenho duas “telas” para dar manutenção ? Isto não seria mas uma espécie de “ajuste técnico”?

Abraços…

juniorsatanas

seguinte, pelo views.proprie, tu pode mandar apos o ACTION par qualquer lugar, se tu usar um form para enciar e de reflash no mesmo, ele vai mostrar do mesmo modo a mensagem… tanto a de erro quanto a de sucesso…

se tu usar ajax, fica melhor ainda, pois nem da load no form… vai depender de como tu quer fazer…

abraço…

L

Show de bola, minha intenção é usar ajax… Valew brother…

Só mais uma coisitcha… este view.properties… eu crio ele na unha ? aonde ele deve ficar ?

P

Deve ficar na raiz dos seus arquivos .class (na raiz dos pacotes)

juniorsatanas

WEB-INF
/ —classes
/----hibernate.cfg.xml
/----displaytag.propries
/----views.propries
log4j

etc..
juniorsatanas

http://www.vraptorframework.com.br/forum/forums/show/1.page;jsessionid=56B5184BB5116CA5F91B0094F101F843

Criado 24 de março de 2008
Ultima resposta 24 de mar. de 2008
Respostas 8
Participantes 3