[Resolvido] Problema ao chamar um método através do atributo rendered  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
kaioc89
Entusiasta Java

Membro desde: 13/04/2011 06:55:01
Mensagens: 20
Offline

Olá pessoal,
Acredito que a resposta seja simples, mas não consegui chegar a uma solução.

eu quero decidir entre mostrar um icone de "OK" ou "Erro". Olhe o código abaixo:



O método isMatriculaValida avalia uma matricula e retorna um booleano.

O meu problema é o seguinte o JSF interpreta a chamada "usuarioController.isMatriculaValida" como se eu estivesse chamando um atributo da classe usuarioController.
Na verdade eu queria que fosse feita a chamada do MéTodo isMatriculaValida.

O que eu queria é chamar um método pra fazer esta validação, sem ter que criar um atributo apenas para isso.

A minha pergunta é, existe alguma forma de eu "dizer" ao JSF que eu estou querendo chamar um método e um atributo?

Ou necessáriamente eu terei que criar um atributo pra testar uma condição?

This message was edited 1 time. Last update was at 26/04/2011 17:37:09

Cristiano de Barros
JavaBaby
[Avatar]

Membro desde: 16/03/2008 21:11:04
Mensagens: 78
Localização: Florianópolis
Offline

Bom dia!

O JSF acessa os atributos pelos getters e setters, logo se você colocar o nome do atributo como "matriculaValida", ele irá buscar o valor através de um método "isMatriculaValida", mesmo que este atributo não exista.

Ficaria assim:


Melhorando e removendo as comparações com true e false, que são desnecessárias:


Espero ter ajudado!

This message was edited 1 time. Last update was at 13/04/2011 08:54:55

kaioc89
Entusiasta Java

Membro desde: 13/04/2011 06:55:01
Mensagens: 20
Offline

Obrigado cara.

O que voce falou é justamente o que estou querendo "driblar".
Não queria acessar um atributo e sim um metodo.

Na verdade eu queria alguma forma de ao chamar "#{usuarioController.matriculaValida}" no meu código, o jsf interprete que estou chamando um método que eu implementei e que retornará um valor. Não queria que fosse chamado um método "get".

Estou evitando criar um atributo na minha classe só para efetuar esta validação.
Cristiano de Barros
JavaBaby
[Avatar]

Membro desde: 16/03/2008 21:11:04
Mensagens: 78
Localização: Florianópolis
Offline

Infelizmente esta é uma limitação que existe no JSF, não é possivel chamar métodos nas expressões EL.
A única maneira que conheço para driblar esta limitação, é como eu sugeri acima.
Como o JSF acessa os atributos pelos getters, você pode "enganar" ele, e criar um método "isMatriculaValida" que retorne um valor boolean, sem que exista um atributo "matriculaValida". Só que na hora de utilizar, no seu rendered, você colocaria "#{usuarioController.matriculaValida}", entendeu?
Perceba que não estou dizendo para você criar um atributo, e sim criar somente o método.

Qualquer coisa posta aí.
kaioc89
Entusiasta Java

Membro desde: 13/04/2011 06:55:01
Mensagens: 20
Offline

Valeu cara!

Ajudou bastante!

É só renomear o método para getMatriculaValida, que será o método invocado pelo JSF neste caso.
Faltou pensar! hehehe

Abração e Obrigado!
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team