JSF + Richfaces: actions e actionListeners

3 respostas
raphaf

Pessoal,

Estou criando o componente HtmlPanelMenu no managedbean e vinculando o mesmo ao componente da página via "binding".

<rich:panelMenu binding="#{managedbean.panelMenu}"/>

Até aí tudo bem, o componente aparece na página corretamente.

A pergunta é: é possível configurar a action ou actionListener dos menuItens no managedbean?

Tentei o método addActionListener() mas não funcionou.

Segue o código do managedbean
public class ManagedBean{

	private HtmlPanelMenu panelMenu;

	public ManagedBean() {}
	

	public HtmlPanelMenu getPanelMenu() {
		if (panelMenu == null) {
			panelMenu = new HtmlPanelMenu();
			HtmlPanelMenuItem menuItem = new HtmlPanelMenuItem();
			menuItem.setName("menuItem");
			menuItem.setLabel("Cadastros");
			menuItem.addActionListener(new ActionListener(){
				public void processAction(ActionEvent e)
						throws AbortProcessingException {
					/*Ação!*/			
				}				
			});
            panelMenu.getChildren().add(menuItem);
		}
		return panelMenu;
	}

	public void setPanelMenu(HtmlPanelMenu panelMenu) {
		this.panelMenu = panelMenu;
	}

}

Obrigado,

Raphael

3 Respostas

W

Estou passando exatamente pelo mesmo problema. Fui inventar de criar um menu dropDown dinâmico e não manjo como uma ação é trabalhada nos bastidores rs… agradecimentos em dobro ao nobre que responder o Rafael.

W

Eis que percebo que esta mensagem data de 2007 ¬¬ e ninguém respondeu o cara? Ou respondeu e foi para outro tópico? Desculpa reativar algo tão antigo, mas agora já foi^^

W

Bom, para aqueles que no futuro venham a pesquisar e cair neste tópico como aconteceu comigo, a solução que achei por ai é mais ou menos assim :

private HtmlDropDownMenu menuComponent;

public HtmlDropDownMenu getMenuComponent() {
   FacesContext ctx = FacesContext.getCurrentInstance();
   Application app = ctx.getApplication();
   if(null == menuComponent)
       menuComponent =  (HtmlDropDownMenu)app.createComponent(HtmlDropDownMenu.COMPONENT_TYPE);
   for(String key: map.keySet()) {
       HtmlMenuItem item =  (HtmlMenuItem)app.createComponent(HtmlMenuItem.COMPONENT_TYPE);
       item.setValue(key);
       item.setId(key);
       Class[] params = {};
       MethodExpression actionExpression = app.getExpressionFactory()
               .createMethodExpression(ctx.getELContext(),
                       "#{bean.menuAction}",
                       String.class, params);
       item.setActionExpression(actionExpression);
       String onSelect = "open(this,'"+map.get(key).toString()+"')";
       item.setOnselect(onSelect);
       menuComponent.getChildren().add(item);      
   }
   return menuComponent;
}
Criado 9 de novembro de 2007
Ultima resposta 23 de out. de 2009
Respostas 3
Participantes 2