HtmlMenuItem richfaces - Preciso de Ajuda

Colegas,

Abaixo, o trecho do menu dinâmico que criei. Quando o usuario clica no
item correspondente ele executa o método lojaAction.teste direitinho,
porém nesse método eu preciso saber qual o value do menu clicado para
eu poder montar uma query e e exibir os itens correspondentes a essa
query.
Pergunto: nesse cenário como faço para passar o valor do HtmlMenuItem
para o método lojaAction.teste?

Muito obrigado,

Marques


HtmlMenuItem menuItemN2 = new HtmlMenuItem();
menuItemN2.setValue(selectLabel(m2));
menuItemN2.setSubmitMode("ajax");
menuItemN2.setActionExpression(createMethodExpression("#{lojaAction.teste}"));
menu.getChildren().add(menuItemN2);

private MethodExpression createMethodExpression(String action) {
       MethodExpression methodExpression = FacesContext
               .getCurrentInstance()
               .getApplication()
               .getExpressionFactory()
               .createMethodExpression(
                       FacesContext.getCurrentInstance().getELContext(),
                               action, null, new Class<?>[0]);
               return methodExpression;
}

Ninguem?

Também estou com este problema, alguem para dar uma ajuda??

Cara, voce nao consegue criar um PropertyActionListener aninhado a esse item do menu? Ou um UIParam? Dessa forma voce conseguiria passar o valor para o bean no momento do click.

Hã, esse “PropertyActionListener” nao me recordo se o nome da classe é esse mesmo :lol: , mas dê uma olhada no demo (dessa tag rich:panelMenu) do RichFaces onde ele faz isso que voce quer, só que com as tags (http://livedemo.exadel.com/richfaces-demo/richfaces/panelMenu.jsf;jsessionid=417D821A16580871F2C4A6F29521CB58?c=panelMenu&tab=usage). A idéia seria adaptar isso ai pro seu código.

Espero que ajude.

Boas eu “martelei” uma solução…
Envolve usar:
++ Um metodo obsoleto (setActionListener), que trata do ActionEvent, para saber onde estou a clicar.
++ Um metodo setActionExpression, que apenas trata do redirect para a nova página.
++ Dizer que o item não é ajax…

Alguém tem uma solução melhor??
eu tentei usar o setActionExpression, mas simplesmente não consigo que no controller ele tenha argumentos, apesar de eu dizer qual o tipo de classe que ele recebe, da me sempre o erro a dizer que o numero de argumentos esta errado…
O código que usei na tentativa foi:

public static MethodExpression createAction(String actionExpression, Class<?> returnType, Class<?> argType) {//,Class<?> argType) { FacesContext context = FacesContext.getCurrentInstance(); return context.getApplication().getExpressionFactory().createMethodExpression(context.getELContext(), actionExpression, returnType, new Class[]{argType}); }

Mas não funciona…