[RESOLVIDO]JSF: Binding: Definir um actionListener para um componente "amarrado" no managed bean

4 respostas
Mantu

Olá pessoal!
Mais uma dúvida sobre binding.
[color=darkblue]Ainda sobre o mesmo exemplo anterior[/color], uma das propriedades do link que eu quero manipular no meu managed bean é a “actionListener”. Programaticamente, o método setActionListener de HtmlCommandLink recebe um objeto MethodBinding, o qual eu não faço idéia de como criar…
Há alguma modo mais “tranquilo” de se definir o actionListener do meu link no managed bean? Se não, como vocês costumam proceder em um caso como esse?

Obrigado pessoal!

4 Respostas

CintiaDR

Olha, nunca fiz com o ActionListener, mas não seria com a classe MethodExpression???

Eu sigo um exemplo com o ValueExpression, mas deve ser parecido…

HtmlSelectBooleanCheckbox visualizar = (HtmlSelectBooleanCheckbox) app
					.createComponent(HtmlSelectBooleanCheckbox.COMPONENT_TYPE);
			ValueExpression vbVisualizar = app.getExpressionFactory()
					.createValueExpression(context.getELContext(),
							"#{perfilBean.permissoes[" +i + "].permite}",
							String.class);
			visualizar.setValueExpression("value", vbVisualizar);
			tabelaRelatorio.getChildren().add(visualizar);
Mantu

Boa dica, CintiaDR! No meu caso, no método setValueExpression do meu link, eu passaria “actionListener” para o primeiro parâmetro provavelmente. Vou testar depois. Depois, porque ainda não consegui reolver a pendência do post abaixo, do qual este onde estamos é dependente…
http://www.guj.com.br/posts/preList/90829/485731.java#485731
De qualquer forma, eu dei uma fuçada, e botei um breakpoint no construtor da classe MethodBinding, e tentei fazer algo assim:

input.setActionListener(new MethodBindingImpl(
	FacesContext.getCurrentInstance().getApplication(),
	"#{lanctosManuaisBean.confirmAlteracaoAtributoPErformed}",
	new Class[]{ActionEvent.class}));

Mas, novamente, não consigo testar, pois tem aquela outra pendência no caminho…
Muito obrigado!

Mantu

Cintia, não consegui testar a sua dica porque a que eu postei acima funcionou e o projeto está corrido, heehhehe. Por favor, não leve a mal, ok?
Porém, a parte de criar o componente me foi bastante útil!
Muito obrigado!

CintiaDR

É, eu acho que esse é o jeito antigo de fazer, porque pelo menos para mim aparece como “deprecated” este método no HtmlCommandLink :twisted:

Mas o jeito novo deve ser muito parecido com o que eu passei, mesmo!

Criado 14 de maio de 2008
Ultima resposta 14 de mai. de 2008
Respostas 4
Participantes 2