JSF - interceptar chamada de método  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
andrepestana
JavaEvangelist
[Avatar]

Membro desde: 23/03/2004 09:57:28
Mensagens: 380
Offline

Pessoal,

No JSF como consigo obter o nome do método que será chamado num ManagedBean para decidir se ele pode ou não ser executado?
Eu estava pensando em fazer isso com um PhaseListener mas não achei nenhum método que me dá a chamada para o método.

Alguém pode dar um exemplo?

[]'s

Pestana

Pestana
http://andrepestana.wordpress.com/
[Email] [MSN]
fre_d
Java Ninja

Membro desde: 13/06/2007 17:42:02
Mensagens: 259
Localização: Lages - SC
Offline


Estou fazendo isso para implementar um sistema de segurança. Estou usando JBoss AOP. Você pode usar tb AspectJ.

Flw
andrepestana
JavaEvangelist
[Avatar]

Membro desde: 23/03/2004 09:57:28
Mensagens: 380
Offline

Por favor,

alguém poderia me dar uma luz para obter o nome do método que será chamado ou a expression language que foi executada?

Eu não "posso" usar AOP. Preciso fazer no phaselistener.

Procurei muito sobre o assunto e não achei nada.

André

Pestana
http://andrepestana.wordpress.com/
[Email] [MSN]
fre_d
Java Ninja

Membro desde: 13/06/2007 17:42:02
Mensagens: 259
Localização: Lages - SC
Offline

As EL são invocadas pelos toda vez que você invocar o método do componente



Toda x que você chamar o método getValue ele vai executar a EL isso pode ser executado por exemplo nas fases PROCESS_VALIDATIONS, INVOKE_APPLICATION e RENDER_RESPONSE.
keller
GUJ Master
[Avatar]

Membro desde: 12/11/2003 16:24:00
Mensagens: 1817
Localização: Auckland - NZ
Offline

Ola,
andrepestana wrote:
Pessoal,

No JSF como consigo obter o nome do método que será chamado num ManagedBean para decidir se ele pode ou não ser executado?


Que tal um filter?
( http://java.sun.com/products/servlet/Filters.html )

andrepestana wrote:
Eu estava pensando em fazer isso com um PhaseListener mas não achei nenhum método que me dá a chamada para o método.

Alguém pode dar um exemplo?

[]'s

Pestana


Nao faz isso nao, se com filter nao funcionar utilize um Proxy.
Boa sorte!

Guilherme I. Keller (Gui)
Diploma in Web Development and Desktop Publishing
SCJA | SCJP | SCWCD | SCBCD | CSM
"Test it, before it test you."
http://flickr.com/guikeller
[WWW] [MSN]
andrepestana
JavaEvangelist
[Avatar]

Membro desde: 23/03/2004 09:57:28
Mensagens: 380
Offline

Fre_d,

Estou usando myfaces 1.1.4 e o FacesContext não tem esse método getELContext().

Tb não entendí o que vc quis dizer:


As EL são invocadas pelos toda vez que você invocar o método do componente


Keller,
Não quero filtro. Gostaria de saber se há um jeito de implementar um PhaseListener que me dá a chamada para o método ou a EL chamada.

Valeu,


Pestana
http://andrepestana.wordpress.com/
[Email] [MSN]
fre_d
Java Ninja

Membro desde: 13/06/2007 17:42:02
Mensagens: 259
Localização: Lages - SC
Offline

O código que postei é da versão 1.2

Abaixo versão 1.1 UIInput método getValue



O que quis dizer é o seguinte. Toda vez que você chama o método UIInput.getValue() ele invoca a EL. Então essa EL pode ser invocada em qualquer fase como por exemplo PROCESS_VALIDATIONS, INVOKE_APPLICATION e RENDER_RESPONSE

Exemplos:

PROCESS_VALIDATIONS
validação: UIInput.getValue() == null -> enviar erro para tela

INVOKE_APPLICATION
Bean: buscaUsuario(UIInput.getValue());

RENDER_RESPONSE
InputRenderer: UIInput.getValue() -> exibir o valor para o usuário

Em todas essas fases a EL foi invocada.

O JBoss Seam utiliza AOP para fazer as interceptações, acho muito dificil você conseguir fazer de outra forma

Flw
andrepestana
JavaEvangelist
[Avatar]

Membro desde: 23/03/2004 09:57:28
Mensagens: 380
Offline

fre_d,

obrigado pela força, cara, mas o que eu preciso é obter a EL no PhaseListener e os métodos do phaselistener só recebem um PhaseEvent. Ex.:



Como dentro de um métdo do PhaseListener eu consigo obter a EL chamada ou o nome do método do bean?

Eu quero receber todas as EL's chamadas, não uma específica ou de um componente específico como UIInput.

valeu,

Pestana
http://andrepestana.wordpress.com/
[Email] [MSN]
fre_d
Java Ninja

Membro desde: 13/06/2007 17:42:02
Mensagens: 259
Localização: Lages - SC
Offline

Da uma olhada nos fontes e veja quando um PhaseListener é acionado. É sempre antes e depois das fases. Os EL são executados dentro das fases.
andrepestana
JavaEvangelist
[Avatar]

Membro desde: 23/03/2004 09:57:28
Mensagens: 380
Offline

desculpe, fre_d, mas não respondeu a minha pergunta.

Eu preciso de um exemplo que mostre como obter a EL num phaseListener. Eu já procurei bastante antes de perguntar aqui neste forum.

Alguém sabe como fazer isso?

grato,

Pestana
http://andrepestana.wordpress.com/
[Email] [MSN]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team