[RESOLVIDO] Dúvida com VRaptor

9 respostas
guilhermevalle

Fala Galera! Beleza?

Estou desenvolvendo uma aplicação para o meu tcc sobre gerenciamento de consultas de clínica médica e eu estou utilizando o vraptor.
Tem uma parte aqui que eu estou agarrado e não consigo sair de jeito nenhum, já dei uma pesquisada aqui, mas não encontrei nada parecido.

O problema é o seguinte:
Quando eu agendo uma consulta, eu tenho o botão de confirmar consulta, quando eu clico em confirmar consulta, ele redireciona para o formulário de inserir a consulta daquele agendamento e passa o id do agendamento junto. O problema é que quando eu vou buscar um paciente para inserir na consulta, e retorno para o formulário da consulta, o id do agendamento não está mais lá…

Gotaria de saber, se alguém aí sabe, como eu faço pra manter o id do agendamento no formulário de consultas mesmo depois de buscar o paciente.
Tentei mudar o tipo do result (ao invés de redirectTo() eu usei o forwardTo()) mas não adiantou…

Desde já muito obrigado pela ajuda.

9 Respostas

alabeduarte

Olá Guilherme.

A forma mais prática de fazer isso é definindo o seu valor do “id” no seu formulario como “hidden”

<input type="hidden" name="objeto.id" value"${objeto.id}" />

Espero ter ajudado.

guilhermevalle

Fala alabeduarte!

Então, quando eu clico em confirmar a consulta, ele já pega o id do agendamento e direciona pro formulário da consulta, e já tem o input type=“hidden” do agendamento, só que quando eu clico para buscar o paciente, ele vai para tela de busca do paciente, e quando eu retorno o paciente para o form de consulta, o id do agendamento não está mais lá.

Queria achar uma forma de manter o id do agendamento lá mesmo depois de ter buscado o paciente.

^^

Lucas_Cavalcanti

vc precisa disponibilizar na requisição o objeto ou o objeto.id, e então colocar em algum input=“hidden” ou coisa do tipo

alabeduarte

opa, posta ai como ta o seu controller e o trecho do seu form, pode ser?

guilhermevalle

Fala galera!

O meu método de confirmarConsulta esta no AgendaConsultaController:

public void confirmaConsulta(Long id) {
		result.include("agendaConsulta", agendaConsultaDAO.carregaAgendamento(id));
		result.use(Results.logic()).redirectTo(ConsultaController.class).formulario();
	}

O método do formulário da minha consulta é essa:

public void formulario() {
		result.include("medicos", medicoDAO.listaMedicos());
		result.include("tipoPagamentos", tipoPagamentoDAO.listaTiposPagamentos());
		result.include("tabelaPrecos", tabelaPrecoDAO.listaTabelaPreco());
	}

Minha JSP de Consulta é essa:

<form action="adiciona" method="post">
	<input type="hidden" name="consulta.agendaConsulta.id" value="${agendaConsulta.id}" />
	
	<p>Paciente: <br/>
		<input type="text" name="consulta.paciente.id" value="${paciente.id}" size="2" /> - <input type="text" value="${paciente.pessoa.nome}" size="70" /><br />
		<b><a href="/sisclinic/paciente/busca">- Buscar Paciente</a></b>
	</p>

	<p>M&eacute;dico: <br/>
	<select name="consulta.medico.id">
		<option value="${consulta.medico.id}">${consulta.medico.pessoa.nome}</option>
		<c:forEach var="medico" items="${medicos}">                                        
			<option <c:if test="${consulta.medico.id == medico.id}"> selected="selected"</c:if> 
			value="${medico.id}">${medico.pessoa.nome}</option>                 
		</c:forEach>
	</select></p>
	
	<p>Tipo de Pagamento: <br/>
	<select name="consulta.pagamento.id">
		<option value="${consulta.pagamento.id}">${consulta.pagamento.tipoPagamento}</option>
		<c:forEach var="pagamento" items="${tipoPagamentos}">                                        
			<option <c:if test="${consulta.pagamento.id == pagamento.id}"> selected="selected"</c:if> 
			value="${pagamento.id}">${pagamento.tipoPagamento}</option>                 
		</c:forEach>
	</select></p>
	
	<p>Pre&ccedil;o da Consulta:<br />
		<input type="text" name="consulta.precoConsulta" size="10" value="${consulta.precoConsulta}" />
	</p>
	
	<input type="submit" value="Gravar" />
</form>
guilhermevalle

Fala Lucas, beleza?
Agora que eu vi sua mensagem.
Não sei se eu não entendi ou vc diz que eu vou ter que ir passando o id do agendamento por parâmetro até na busca??

Vlw!

Lucas_Cavalcanti

se vc quer manter o agendamento, vc tem que guardar o agendamento.id em algum input…
se vc quer manter o chocolate, vc precisa de um chocolate.id em algum input…

guilhermevalle

Lucas Cavalcanti:
se vc quer manter o agendamento, vc tem que guardar o agendamento.id em algum input…
se vc quer manter o chocolate, vc precisa de um chocolate.id em algum input…

Fala Lucas!
Tentei passar o input do agendamento pra busca do paciente, mas não deu boa não =(
no form de consulta ele aparece, mas quando eu faço a busca e retorno lá pro form de consulta ele continua sumindo, mesmo eu mandando o id dele pra página de busca.
=/

guilhermevalle

Fala galera, consegui resolver o problema!

O que faltava era passar o id do agendamento no método que insere o paciente buscado na consulta.

public void consulta(Long id) {
		result.include("paciente", pacienteDAO.carregaPaciente(id));
		result.include("agendaConsulta", agendaConsultaDAO.carregaAgendamento(id));
		result.use(Results.logic()).redirectTo(ConsultaController.class).formulario();
	}

Vlw aí galera ^^

Abraços a todos!

Criado 16 de novembro de 2010
Ultima resposta 16 de nov. de 2010
Respostas 9
Participantes 3