Senhores,
Estou com um problema para gerar um menubar dinamico do PrimeFaces.
o problema é que eu preciso gerar esse menu com um actionlistener e um action dinamico mas não está funcionando.
Preciso executar uma ação e ao mesmo tempo direcionar para uma outra página.
Segue abaixo minha classe:
package br.com.alyconsulting.controller;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;
import org.hibernate.SessionFactory;
import org.primefaces.component.menuitem.MenuItem;
import org.primefaces.component.submenu.Submenu;
import org.primefaces.model.DefaultMenuModel;
import org.primefaces.model.MenuModel;
import br.com.alyconsulting.DAO.ContentDAO;
import br.com.alyconsulting.DAO.TitleDAO;
import br.com.alyconsulting.model.Content;
import br.com.alyconsulting.model.SubTitle;
import br.com.alyconsulting.model.Title;
import br.com.alyconsulting.util.HibernateUtil;
@ManagedBean(name = "app")
@ApplicationScoped
public class MBApplication implements Serializable, ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
private MenuModel model;
private Content homeContent;
public MBApplication() {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
TitleDAO titleDAO = new TitleDAO();
titleDAO.setSessionFactory(sessionFactory);
model = new DefaultMenuModel();
List<Title> titles = titleDAO.findAll();
for (Title title : titles) {
// First submenu
Submenu submenu = new Submenu();
submenu.setLabel(title.getTitle());
submenu.setId("title_" + title.getId());
submenu.getAttributes().put("title", title);
// Second submenu
List<SubTitle> subtitles = title.getSubtitles();
for (SubTitle subTitle : subtitles) {
MenuItem item = new MenuItem();
item.setValue(subTitle.getSubtitle());
item.setId("subTitle_" + subTitle.getId());
item.getAttributes().put("subtitle", subTitle);
item.addActionListener(this);
submenu.getChildren().add(item);
}
if (subtitles.size() <= 0) {
}
model.addSubmenu(submenu);
}
ContentDAO contentDAO = new ContentDAO();
contentDAO.setSessionFactory(sessionFactory);
List<Content> contents = contentDAO.findAllByProperty("home_show",
Boolean.TRUE);
for (Content content : contents) {
homeContent = content;
}
}
public String page() {
System.out.println("ACTION");
return "training";
}
public MenuModel getModel() {
return model;
}
public void setModel(MenuModel model) {
this.model = model;
}
public Content getHomeContent() {
return homeContent;
}
public void setHomeContent(Content homeContent) {
this.homeContent = homeContent;
}
@Override
public void processAction(ActionEvent event) throws AbortProcessingException {
System.out.println("ACTION LISTENER");
Map<String, Object> map = event.getComponent().getAttributes();
SubTitle subTitle = (SubTitle) map.get("subtitle");
System.out.println("OBJECT subTitle > ID: " + subTitle.getId()
+ " - Subtitle: " + subTitle.getSubtitle() + " - Title: "
+ subTitle.getTitle().getTitle() + " - Active: "
+ subTitle.isActive() + " - Date: "
+ subTitle.getDate_request());
}
}