Erro com JSTL ao listar duas classes  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
newuser
JavaBaby
[Avatar]

Membro desde: 12/12/2011 21:36:23
Mensagens: 76
Localização: Anápolis GO
Offline

Olá amigos, estou com um problema e devido a falta de experiência, não sei resolver.

É o seguinte:

Tenho a Superclasse Cadastro:

e a Classe Usuario:

e o método listar em UsuarioDao:

acho que o problema está aqui em listaUsuario.jsp:

Quando eu executo e mando listar, dá o seguinte erro:

21/01/2012 23:57:03 org.apache.catalina.core.ApplicationDispatcher invoke
GRAVE: Servlet.service() for servlet jsp threw exception
javax.el.PropertyNotFoundException: Property 'Id' not found on type classe.modelo.vo.Usuario...

Parece que está dizendo que não existe o atributo Id na classe usuario mas existe sim. O que pode ser?

This message was edited 1 time. Last update was at 21/01/2012 22:19:03


user = new User();
[Email]
tinorberto
JavaEvangelist
[Avatar]

Membro desde: 29/10/2008 15:54:46
Mensagens: 344
Localização: Viçosa - Minas Gerais
Offline

vc esqueceu dentro do while do id


Bacharel - Ciência da Computação
Universidade Federal de Viçosa
OCJP 6
[Email] [MSN]
BrunoFurtado
JavaBaby

Membro desde: 25/08/2010 01:27:06
Mensagens: 97
Offline

Opa...

Brother, dei uma olhada no código e parece que tanto o select, quanto o set do "Id" consta no teu while...

Classe UsuarioDao, método listar():

O que vou falar daqui pra baixo não é uma certeza, mas vale a pena tentar...
Notei que na Classe Usuario, vc nomeou teu atributo como sendo "Id".
Segundo os padrões de "boas normas" do Java, é um equivoco. A nomenclatura deveria ser "id".
Não tenho certeza quanto a esta norma, mas sei que a biblioteca JSTL utiliza alguns padrões e faz necessário que estes sejam implementados de forma correta.
Me parece que ao utilizar "Id" com a inicial maiuscula, o cógido acaba ferindo essas normas.
A biblioteca JSTL não consegue encontrar o atributo, quando chamado da forma presente no fonte "${lista.Id}".

Posso estar falando besteira...
Mas eu tentaria alterar o nome do atributo "Id" para "id". Alteraria tb sua chamada de "${lista.Id}" para "${lista.id}".
Também vale frisar que na superclasse Cadastro, o atributo é "id", e não "Id".

É uma possibilidade...
Não custa tentar...

This message was edited 1 time. Last update was at 21/01/2012 23:58:20


Estudante Universitário.
Bacharelado em Sistemas de Informação.
Universidade Positivo.
CURITIBA - PR
[Email] [MSN]
newuser
JavaBaby
[Avatar]

Membro desde: 12/12/2011 21:36:23
Mensagens: 76
Localização: Anápolis GO
Offline

Valeu BrunoFurtado. Eu fiz o que você disse em trocar Id por id e agora tá certo só que tá dando erro nas linhas debaixo:


22/01/2012 02:16:45 org.apache.catalina.core.ApplicationDispatcher invoke
GRAVE: Servlet.service() for servlet jsp threw exception
javax.el.PropertyNotFoundException: Property 'descricao' not found on type classe.modelo.vo.Usuario

user = new User();
[Email]
newuser
JavaBaby
[Avatar]

Membro desde: 12/12/2011 21:36:23
Mensagens: 76
Localização: Anápolis GO
Offline

Resolvido aqui valeu gente.

O certo é ${lista.municipio.descricao} porque descricao vem da classe Municipio que é atributo da classe Cadastro.

Obrigado a todos.

user = new User();
[Email]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team