Duvida com passagem de parametros (vraptor)

4 respostas
cs.santos0

Iai pessual, estou com bastante duvidas no seguinte…

Estou utiizando vraptor e tenho q fazer uma busca onde devo passar como parametro um Long que representa o id de um tipo de parceiros que esta em um combobox. Eu fiz o método que faz a lógica q eu necessito, ja esta testada e o valor ficará armazenado no atributo parceiros que é um List:

public void listaParceiro(Long id){ this.daoFactory.beginTransaction(); this.parceiroDao = this.daoFactory.getParcDao(); parceiros = this.parceiroDao.listaParceiro(id); this.daoFactory.commit(); }

Bom, ai vem minha duvida, não sei como pegar esse valor do formulario e passar como parametro para o metodo…e tb como depois de executar o método listar esses valores no DisplayTags…será que alguem poderia me dar uma força??

Listando todos os parceiros cadastrados no banco eu ja fiz…mas não sei como fazer dessa maneira q descrevi.

Obrigado

4 Respostas

rafaelglauber

Veja isso aqui: http://www.vraptor.org/pt/request/index.html

cs.santos0

então pessual, to quebrando a kbeça aki..e fiz algumas coisas....

a minha ParceiroLogic esta assim:

package br.com.cienci.wisa.logic;

import java.util.List;

import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;
import org.vraptor.annotations.Out;
import org.vraptor.annotations.Parameter;

import br.com.cienci.wisa.dao.DaoFactory;
import br.com.cienci.wisa.dao.ParceiroDao;
import br.com.cienci.wisa.modelo.Parceiro;
import br.com.cienci.wisa.modelo.TipoParceiro;

/**
 * ParceiroLogic.java
 * Criado em 26/01/2008
 * @author Ciro S. Santos
 * @version 1.0
 *
 * Classe responsavel pela lógica de négocios do cadastro de parceiros
 */


@Component("parceiro")
@InterceptedBy({FactoryInterceptor.class,DaoInterceptor.class})
public class ParceiroLogic {

	private DaoFactory daoFactory;
	private List<Parceiro> parceiros;
	private Parceiro parceiro;
	private ParceiroDao parceiroDao;

	@Out
	@Parameter
	private Long id;

	public ParceiroLogic(DaoFactory daoFactory){
		this.daoFactory = daoFactory;
	}

	public void armazena(Parceiro parceiro){
		this.daoFactory.beginTransaction();
		this.daoFactory.getParceiroDao().atualiza(parceiro);
		this.daoFactory.commit();
	}

	public void remove(Parceiro parceiro){
		this.daoFactory.beginTransaction();
		this.daoFactory.getParceiroDao().remove(parceiro);
		this.daoFactory.commit();
	}

	public void lista(){
		parceiros = this.daoFactory.getParceiroDao().listaTudo();
	}

	public void editar(Parceiro parceiro){
		this.parceiro = this.daoFactory.getParceiroDao().procura(parceiro.getCod());
	}

	public Parceiro getParceiro() {
		return parceiro;
	}

	/**
	 * Método para que o fórmulario seja exibido ao chamar cliente.adiciona.logic
    */
	public void formulario(){
	}

	public void pesquisa(){
	}

	public List<Parceiro> getParceiros() {
		return parceiros;
	}

	public List<TipoParceiro> getListaTipoParceiros(){
		return this.daoFactory.getTipoParceiroDao().listaTudo();
	}

	public void listaParceiro(Long id){
		this.daoFactory.beginTransaction();
		this.parceiroDao = this.daoFactory.getParcDao();
		parceiros = this.parceiroDao.listaParceiro(id);
		this.daoFactory.commit();
	}

	protected Long getId() {
		return id;
	}
}

a nível de teste crei o pesquisa.ok.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="parceiro.listaParceiro.logic">
<input type="text" name="id"/>
<input type="submit"/>
</form>
</body>
</html>

e tb o listaParceiro.ok.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@taglib uri="http://displaytag.sf.net" prefix="display"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<display:table id="parceiro" name="${parceiros}" requestURI="parceiro.listaParceiro.logic" pagesize="10">
	        		<display:column property="cod" title="Cod"/>
	        		<display:column property="nome" title="Nome"/>
	        		<display:column property="cpf" title="CPF"/>
	        		<display:column property="tel" title="Telefone"/>
	        		<display:column property="cliBloqCad" title="Bloqueio"/>
	        		<display:column title="Editar">
	        			<a href="parceiro.editar.logic?parceiro.cod=${parceiro.cod}">editar</a>
	        		</display:column>
	        		<display:column title="Remover">
	        			<a href="parceiro.remove.logic?parceiro.cod=${parceiro.cod}">remover</a>
	        		</display:column>
	        	</display:table>
</body>
</html>

e a consulta eta em :

import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;

import br.com.cienci.wisa.modelo.Parceiro;

/**
 *ParceiroDao.java
 *Criado em 31/01/2008
 *@author Ciro S. Santos
 *@version 1.0
 *
 *Classe responsavel por fornecedor as consultas para as listagens.
 */

public class ParceiroDao extends Dao<Parceiro> {

	public ParceiroDao(Session session) {
		super(session, Parceiro.class);		
	}

	public List<Parceiro> listaParceiro(Long id){	
		
		String hql = "SELECT p FROM Parceiro as p WHERE p.tipo.id = :id";		
		Query query = getSession().createQuery(hql);
		query.setParameter("id", id);
		return query.list();
		
	}	
}

e no view.proprerties isso:

parceiro.listaParceiro.ok = parceiro.listaParceiro.logic

sera q alguem pode me dizer oq estou fazendo de errado....pois quando executo a url

http://localhost:8080/wisa/parceiro/parceiro.pesquisa.logic

ele me abre o form, e quando clico no botão...ele fica tentando carregar a página, mas não acontece nda...

alguem ai por favor???

vlw... :shock:

cs.santos0

alguem??..por favor

juniorsatanas

Eu tenho várias pesquisa para usuário, usado HQL, e javascrito, ve se da pra adaptar para o seu caso...

public Usuario existeUnico(Usuario usuario) {
		String hql = "select u from Usuario as u where u.login = :login and u.senha = :senha";
		Query query = getSession().createQuery(hql);
		query.setParameter("login", usuario.getLogin());
		query.setParameter("senha", usuario.getSenha());
		return (Usuario) query.uniqueResult();
	}
public Usuario todos(Usuario usuario) {
		String hql = "select u from Usuario as u where u.login = :login and";
		Query query = getSession().createQuery(hql);
		query.setParameter("login", usuario.getLogin());
		return (Usuario) query.uniqueResult();
	}
public void lista() {
		usuarios = this.daoFactory.getUsuarioDao().listaTudo();
	}
public Usuario existeUnico(Usuario usuario) {
		String hql = "select u from Usuario as u where u.login = :login and u.senha = :senha";
		Query query = getSession().createQuery(hql);
		query.setParameter("login", usuario.getLogin());
		query.setParameter("senha", usuario.getSenha());
		return (Usuario) query.uniqueResult();
	}
// PESQUISA SIMPLE DE usuarioS, autocompletar
        @Remotable
	public void searchLogin(Usuario usuario) {

		if (usuario.getLogin() == null) {
			usuario.setLogin("");
		}
		//procura os usuarios com um Login
		this.usuarios = this.daoFactory.getUsuarioDao().searchSimilarLogin(usuario.getLogin());
	}
[code]
$(document).ready(function() { var url = 'cliente.searchNome.logic'; $("#clienteNome").ajaxError( function(request, settings){ //alert(settings.getAllResponseHeaders()); //i18n ???? erroText = settings.getResponseHeader("SessionTimeOut"); if(erroText != null) { alert(erroText); } else { alert("NAO, ENCONTRADO O NOME"); } } ).autocomplete(url, "cliente.nome", { minChars:2 }); }); [code]
Criado 31 de janeiro de 2008
Ultima resposta 23 de mar. de 2008
Respostas 4
Participantes 3