[Resolvido]Exeption na hora de chamar usuarioWeb.nome

Boa tarde Galera,

Estou fazendo a apostila fj-28, e estava tudo indo muito bem até eu chegar na autenticação de Usuário.

Estou salvando no banco, colcando ele na sessao através do usuarioWeb, porém na hora de chamar na header estou com essa exeption:

root cause

javax.el.PropertyNotFoundException: Property ‘nome’ not found on type br.com.goodbuy.model.UsuarioWeb

Meu fontes estão assim:

header

[code]



<c:if test="${usuarioWeb.logado }">
Olá, ${usuarioWeb.nome}
<a href="<c:url value="/logout"/>">Logout
</c:if>
<c:if test="${ empty usuarioWeb or not usuarioWeb.logado }">
Você não está logado. <a href="<c:url value="/login"/>">Login
<a href="<c:url value="/usuarios/novo"/>">Cadastre-se
		</c:if>
		</div>[/code]

UsuarioWeb

[code]package br.com.goodbuy.model;

import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.SessionScoped;

@Component
@SessionScoped
public class UsuarioWeb {

private Usuario logado;

// getters and setters
[/code]

UsuariosController

[code]package br.com.goodbuy.controller;

import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.validator.ValidationMessage;
import br.com.goodbuy.dao.UsuarioDao;
import br.com.goodbuy.model.Usuario;
import br.com.goodbuy.model.UsuarioWeb;

@Resource
public class UsuariosController {

private final UsuarioDao dao;
private final Result result;
private final Validator validator;
private final UsuarioWeb usuarioWeb;

public UsuariosController(UsuarioDao dao, Result result, Validator validator, UsuarioWeb usuarioWeb) {
	this.dao = dao;
	this.result = result;
	this.validator = validator;
	this.usuarioWeb = usuarioWeb;
}

//…

@Post("/login")
public void login(Usuario usuario) {
	Usuario carregado = dao.carrega(usuario);
	if(carregado == null) {
		validator.add(new ValidationMessage("Login e/ou senha inválidos", "usuario.login"));
	}	
	validator.onErrorUsePageOf(UsuariosController.class).loginForm();
	
	usuarioWeb.login(carregado);
	
	result.redirectTo(ProdutosController.class).lista();
}

[/code]

onde estou errando :cry: ?

Desde já agradeço,

abraços

Está faltando o atributo ‘nome’ e seus respectivos getter e setter dentro da classe UsuarioWeb.

Isso aqui indica que ele não encontrou esse atributo, se não encontrou, é pq não tem.
javax.el.PropertyNotFoundException: Property ‘nome’ not found on type br.com.goodbuy.model.UsuarioWeb

package br.com.goodbuy.model;  
  
import br.com.caelum.vraptor.ioc.Component;  
import br.com.caelum.vraptor.ioc.SessionScoped;  
  
@Component  
@SessionScoped  
public class UsuarioWeb {  
      
    private boolean logado;  // aqui seria um boolean, certo?
    private String nome; // essa linha.
// getters and setters  

Na realidade não é bem isso, essa classe UsuarioWeb é uma representação de um Usuário na sesão.

Completa está assim:

package br.com.goodbuy.model;

import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.SessionScoped;

@Component
@SessionScoped
public class UsuarioWeb {
	
	private Usuario logado;
	
	public void login(Usuario usuario) {
		this.logado = usuario;
	}
	
	public String nome() {
		return logado.getNome();		
	}
	
	public boolean isLogado() {
		return logado != null;		
	}
	public void logout() {
		this.logado = null;
	}

}

Na hora do login eu carrego o usuário e depois passo para ele para o usuarioWeb que recebo no construtor do Controller

Já fiz testes no controle para tentar imprimir no servidor usuarioWeb.nome e dá certo, porém quando tento chamar na jsp estora a exeption.

Algo como se ela não fosse carregada…

Ah!

Então você precisa trocar o método nome() para getNome()…

Pois as ELs leem nos padrões JavaBeans, ou seja, getNome(), setNome(), isLogado()…

você faz usuarioWeb.nome e a EL converte para usuarioWeb.getNome()…

Eu sabia que algo bem besta, porém não tinha percebido :?

Agora funcionou Rafael!

Muito obrigado, tô curtindo de mais o fórum, o curso, pessoal muito atencioso com as dúvidas da galera :smiley:

Grande abraço!

Opa! Ai sim hein! :smiley:

Esses erros bobos são assim mesmo, passam completamente despercebidos… :?

Edita o seu primeiro post e coloca um “[Resolvido]”. Assim, ajudamos quem tiver um problema igual ao seu…