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?
JSF addActionListener
6 Respostas
Veja se este tópico te ajuda.
Aproveita e posta o código, ou pelo menos até onde vc chegou.
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
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.
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();
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);