JSF - HtmlDropDownMenu

3 respostas
spycall

Olá pessoal, seguinte:

Tenho que montar um medu dinamico, de acordo com as permissoes, ate ai tudo bem, o problema que estou tento eh de como adicionar uma action para os itens. Segue o codigo
HtmlDropDownMenu menu = new HtmlDropDownMenu();
		HtmlMenuItem menu.setValue("Teste");		
			
		item = new HtmlMenuItem();		
		item.setValue("Usuario");
		MethodExpression methodExp = null;			
		item.setActionExpression(methodExp);		
			
		menu.getChildren().add(item);

O problema eh que o setActionExpression espera um MethodExpression que eh uma classe abstrata, nao sei qual implementacao dessa classe devo utilizar para passar a action para o item.

Valeu

3 Respostas

spycall

Para referencia futura:

// String action
        HtmlDropDownMenu menu = new HtmlDropDownMenu();
        HtmlMenuItem menu.setValue("Teste");        
            
        item = new HtmlMenuItem();        
        item.setValue("Usuario");

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

        item.setActionExpression(methodExpression);            
        menu.getChildren().add(item);
marcos.junqueira

spycall,

muito bom, irei aproveitar isso.

Estou tentando montar dinamicamente o componente da seguinte forma:

&lt;rich:menuItem ajaxSingle="true" value="#Disponivel" action="#{GestorAtendentesBB.changeStatus}"&gt;
    &lt;a4j:actionparam name="atendenteId" assignTo="#{GestorAtendentesBB.atendente.id}" value="{idAtendente}"/&gt;
    &lt;a4j:actionparam name="statusId" assignTo="#{GestorAtendentesBB.status.id}" value="#{status.id}"/&gt;
&lt;/rich:menuItem&gt;

Quando eu faço direto no jsf funciona de boa, os parametros são setados corretamente.

Porém quando eu faço via código java os ActionParameter não funcionam. Será que está faltando alguma coisa???

HtmlActionParameter idAtendenteParameter = new HtmlActionParameter();
ValueExpression assignToExpressionAtendente = expressionFactory.createValueExpression(eLContext, "#{GestorAtendentesBB.atendente.id}", String.class);
idAtendenteParameter.setName("idAtendente");
idAtendenteParameter.setAssignToBinding(assignToExpressionAtendente);
idAtendenteParameter.setValue("{idAtendente}");
HtmlActionParameter statusParameter = new HtmlActionParameter();
ValueExpression assignToExpressionStatus = expressionFactory.createValueExpression(eLContext, "#{GestorAtendentesBB.status.id}", String.class);
statusParameter.setName("status");
statusParameter.setAssignToBinding(assignToExpressionStatus);
statusParameter.setValue(s.getId());

menuItem.getChildren().add(idAtendenteParameter);
menuItem.getChildren().add(statusParameter);

Até mais.

P
HtmlActionParameter idAtendenteParameter = new HtmlActionParameter();
ValueExpression assignToExpressionAtendente = expressionFactory.createValueExpression(eLContext, "#{GestorAtendentesBB.atendente.id}", String.class);
idAtendenteParameter.setName("idAtendente");
idAtendenteParameter.setAssignToBinding(assignToExpressionAtendente);
idAtendenteParameter.setValue("{idAtendente}");
HtmlActionParameter statusParameter = new HtmlActionParameter();
ValueExpression assignToExpressionStatus = expressionFactory.createValueExpression(eLContext, "#{GestorAtendentesBB.status.id}", String.class);
statusParameter.setName("status");
statusParameter.setAssignToBinding(assignToExpressionStatus);
statusParameter.setValue(s.getId());

/*Adicione estas linhas*/
menuItem.addActionListener(idAtendenteParameter) ; 
menuItem.addActionListener(statusParameter) ;


menuItem.getChildren().add(idAtendenteParameter);
menuItem.getChildren().add(statusParameter);

Abraços

Criado 22 de agosto de 2007
Ultima resposta 28 de mai. de 2009
Respostas 3
Participantes 3