Problema com Session no Vraptor

5 respostas
well

Pessoal to fazendo um session para carregar um paciente. tipo clico no botao carregar e ele joga um paciente para a sessao e com isso pego informaçoes dele. Mais ai usei a mesma regra do login, por falta de conhecimento mais sem validaçao é logico. ai ficou assim:

PacienteSession

package br.com.dental.paciente;

import java.io.Serializable;

import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.SessionScoped;
import br.com.dental.modelo.Paciente;

@Component
@SessionScoped
public class PacienteSession implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	
	private Paciente carregado;

	public void carrega(Paciente paciente) {
		this.carregado = paciente;
	}

	public String getNome() {
		return carregado.getNome();
	}
}

PacienteDAO acho que pode estar errado.

public Paciente carrega(Paciente paciente) {
		Session session = (Session) em.getDelegate();
		return (Paciente) session.createCriteria(Paciente.class)
				.uniqueResult();

	}

pacienteController

@Post
	@Path("/carrega-paciente")
	public void carrega(Paciente paciente){
		Paciente carregado = dao.carrega(paciente);
		pacienteSession.carrega(carregado);
		result.redirectTo(ReceitasController.class).lista();
	}

e a jsp

<form action="<c:url value= "/carrega-paciente" />" method="POST" class="form-ajuste">
			<input type="hidden" name="paciente.id" value="${paciente.id}" /> 
				<button class="link-add" type="submit" title="Carregar"></button>
		</form>

e a header onde fica para mostra o nome do paciente

Paciente: ${pacienteSession.nome}

e o erro:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

br.com.caelum.vraptor.view.ResultException: org.apache.jasper.JasperException: An exception occurred processing JSP page /header.jspf at line 140

137: 					<form  action="<c:url value="/pacientes/busca" />">
138: 						<input class="buscas" id="busca" name="nome" size="40"/>
139: 					</form>
140: 					 Paciente: ${pacienteSession.nome}
141: 				</li>
142: 		
143: 				</ul>


Stacktrace:
	br.com.caelum.vraptor.view.DefaultPageResult.defaultView(DefaultPageResult.java:69)
	br.com.caelum.vraptor.interceptor.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:60)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.OutjectResult.intercept(OutjectResult.java:67)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:85)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)

Deve ser uma besteira que estou errando mais já estou com a cabeça quente :confused: .

5 Respostas

renanreismartins

descansa um pouco man!

veja seu dao realmente esta errado, vc esta buscando por paciente, mas nao esta colocando nenhuma restrição

abrassss

Lucas_Cavalcanti

será que o paciente não está vindo null?

F

pode ser isso que o lucas disse… para isso faça o teste com JSTL para só colocar o nome do Paciente se ele não estiver nulo.

<c:if test="${!empty pacienteSession}">
  Paciente: ${pacienteSession.nome}
</c:if>

acho q é assim hehehehe… se num for é o caminho…

Lucas_Cavalcanti

vc não precisa ficar fazendo ifs de null no jsp,

o problema é que se o jsp chama um getter e o getter dá um nullpointer ele não pode fazer nada.

tenta olhar o método PacienteSession#getNome e veja se pode dar nullpointer dentro dele.

F

Lucas Cavalcanti:
vc não precisa ficar fazendo ifs de null no jsp,

o problema é que se o jsp chama um getter e o getter dá um nullpointer ele não pode fazer nada.

tenta olhar o método PacienteSession#getNome e veja se pode dar nullpointer dentro dele.

tem razão, era só uma forma de também tentar verificar…

Criado 13 de março de 2012
Ultima resposta 14 de mar. de 2012
Respostas 5
Participantes 4