Prezados,
Preciso de um ajuda, estou usando o Menu do primafaces de forma dinâmica, onde carrego vários itens cadastrados no banco, itens diferentes do menu podem ir para a mesma tela exemplo graficoPizza.xhtml onde outros itens também apontam para ela, porém o que muda é a query que irá carregar na tela.
O problema está exatamente ai, quero identifica qual o item o usuário click no menu para busca a query desse item e popula o Bean com os dados correspondente.
Segue os códigos:
menu.xhtml<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui" template="layout.xhtml">
<ui:define name="menu">
<p:menu model="#{menuAction.model}" style="width:95%"/>
</ui:define>
</ui:composition>
while (graficoIt.hasNext()) {
Grafico graficoNovo = graficoIt.next();
item = new MenuItem();
item.setId("itemMenu" + graficoNovo.getTitulo().replace(" ", ""));
item.setValue(graficoNovo.getTitulo());
item.setAjax(false);
if (graficoNovo.getComponenteWeb().equals("Barra")) {
item.setUrl("graficoBarra.xhtml");
item.setActionExpression(createMethodExpression("#{barraAction.teste}"));
} else if (graficoNovo.getComponenteWeb().equals("Pizza")) {
item.setUrl("conteudo/graficoPizza.xhtml");
item.setActionExpression(createMethodExpression("#{pizzaAction.teste}"));
} else if (graficoNovo.getComponenteWeb().equals("Area")) {
item.setUrl("graficoArea.xhtml");
item.setActionExpression(createMethodExpression("#{areaAction.teste}"));
} else if (graficoNovo.getComponenteWeb().equals("Gauge")) {
item.setUrl("graficoGauge.xhtml");
item.setActionExpression(createMethodExpression("#{gaugeAction.teste}"));
} else if (graficoNovo.getComponenteWeb().equals("Linha")) {
item.setUrl("graficoLinha.xhtml");
item.setActionExpression(createMethodExpression("#{linhaAction.teste}"));
}
submenu.getChildren().add(item);
}
model.addSubmenu(submenu);
private MethodExpression createMethodExpression(String action) {
MethodExpression methodExpression = FacesContext
.getCurrentInstance()
.getApplication()
.getExpressionFactory()
.createMethodExpression(
FacesContext.getCurrentInstance().getELContext(),
action, null, new Class<?>[0]);
return methodExpression;
}
public void teste(ActionEvent event) {
System.out.println(event.getComponent().getId());
}
Aguardo a ajuda de vocês.
Obrigado.