JSF addActionListener

6 respostas
lionels

Oi para todos, estou fazendo um menu dinamico com usando o binding e nao estou conseguindo adicionar um addActionListener no componente
HtmlPanelMenuItem do richfaces alguem pode me dar uma ajuda de como fazer o addActionListener?

6 Respostas

CintiaDR

Veja se este tópico te ajuda.

Aproveita e posta o código, ou pelo menos até onde vc chegou.

lionels

Desculpe minha falta de clareza na pergunta vou tentar explicar melhor agora…vou mudar totalmente a questao que coloquei no inicio acho que desta forma é melhor … o addactionlistener tambem resolveria mas creio que a melhor forma a se fazer seria a que vou falar abaixo
Estou usando jsf + richfaces + tomawank

o que eu quero fazer é com o componente abaixo do tomawank ele fica dentro de um commandlink e o que eu quero fazer pelo binding é setar esta propriedade chamada assignto pois nele eu passo o que eu quero alterar o valor neste caso seria o titulo de um aviso na minha classe AvisoBean

Se nao fosse dinamico ele seria desse jeito
<a4j:actionparam name=“TituloAviso”
assignTo="#{AvisoBean.aviso.titulo}" value="#{avis.titulo}">
</a4j:actionparam>

no binding esta assim e o paramentro que assigntobinding pede é um ValueExpression, tentei fazer do jeito que voce passou neste link mas algo deve estar errado,provavelmente no valueExpression pois quando eu clico no menu ele nao acessa a classe para alterar o valor

[b][color=blue]
HtmlActionParameter htmlparam = new HtmlActionParameter ();

FacesContext context = FacesContext.getCurrentInstance();

ELContext elContext = context.getELContext();

Application app = context.getApplication();

htmlparam = (HtmlActionParameter) app.createComponent(HtmlActionParameter.COMPONENT_TYPE);

ValueExpression visualizar = app.getExpressionFactory().createValueExpression(context.getELContext(),

“#{AvisoBean.aviso.titulo}”,AvisoBean.class);

htmlparam.setAssignToBinding(visualizar);

commandlink = new HtmlCommandLink();
commandlink.getChildren().add(htmlparam);

menuitem.getChildren().add(commandlink);

[/color][/b]

Acho que agora ficou melhor muito obrigado pelo auxilio fico aguardando

CintiaDR

Olha só, até onde eu sabia o ValueExpression se ligava a atributos (sabe, desses com get&set, etc).

Agora eu não manjo NADA de richfaces. Mas eu tentaria isso:

HtmlActionParameter htmlparam = new HtmlActionParameter ();

FacesContext context = FacesContext.getCurrentInstance();
ELContext elContext = context.getELContext();
Application app = context.getApplication();
htmlparam = (HtmlActionParameter) app.createComponent(HtmlActionParameter.COMPONENT_TYPE);
ValueExpression visualizar = app.getExpressionFactory().createValueExpression(context.getELContext(),
"#{AvisoBean.aviso.titulo}",String.class); // titulo não é um String???

htmlparam.setAssignToBinding(visualizar);

commandlink = new HtmlCommandLink();
commandlink.getChildren().add(htmlparam);

menuitem.getChildren().add(commandlink);

E escuta, não tá faltando os values do commandLink, ou desse actionParam? Sei lá…

E vc tem certeza que o nome do seu objeto JSF é AvisoBean? Normalmente eles começam com letras minúsculas. Confira isso no Faces-Config.

lionels

olha tenho ctza absoluta, o problema é que na hora que clico no menu ele nao vai na classe e passa os valores é como se estivesse inativo, estou pensando em inserir um addactionlistener no commandlink mas nao estou conseguindo

commandlink.addActionListener();

balthazar

http://www.guj.com.br/posts/list/0/98540.java#531204

att,

P
HtmlActionParameter htmlparam = new HtmlActionParameter ();

FacesContext context = FacesContext.getCurrentInstance();
ELContext elContext = context.getELContext();
Application app = context.getApplication();
htmlparam = (HtmlActionParameter) app.createComponent(HtmlActionParameter.COMPONENT_TYPE);
ValueExpression visualizar = app.getExpressionFactory().createValueExpression(context.getELContext(),
"#{AvisoBean.aviso.titulo}",String.class); // titulo não é um String???

htmlparam.setAssignToBinding(visualizar);

commandlink = new HtmlCommandLink();

/*Adicione  a linha seguinte */
commandlink.addActionListener(htmlparam) ; 

commandlink.getChildren().add(htmlparam);

menuitem.getChildren().add(commandlink);
Criado 12 de junho de 2008
Ultima resposta 28 de mai. de 2009
Respostas 6
Participantes 4