Migrating dynamic PanelMenu richfaces 3.x to 4.x
bobboyms Jun 19, 2011 10:47 AMHello everyone, I have a dynamic menu where I get data from database to create it in version 3.x of richfaces, but I'm moving to 4.x and I have a problem with
import org.ajax4jsf.component. html.HtmlActionParameter;
therefore not found in 4.x. I tried to use
import org.richfaces.component.UIParameter; import org.ajax4jsf.component.UIActionParameter;
however does not work as HtmlActionParameter. What would be the new class version 4.x for HtmlActionParameter? Here my code
Version richFaces 4.x
package br.com.sixcred.ManagedBeans; import java.util.ArrayList; import java.util.List; import javax.el.MethodExpression; import javax.el.ValueExpression; import javax.faces.application.Application; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.context.FacesContext; import org.richfaces.component.UIParameter; import org.ajax4jsf.component.UIActionParameter; import org.richfaces.component.UICommandButton; import org.richfaces.component.UIPanelMenu; import org.richfaces.component.UIPanelMenuGroup; import org.richfaces.component.UIPanelMenuItem; import br.com.sixcred.EJBeans.DAO.ModulosDAO; import br.com.sixcred.EJBeans.bean.ItensModulo; import br.com.sixcred.EJBeans.bean.Modulos; import br.com.sixcred.EJBeans.util.HibernateUtil; @ManagedBean(name="principal") @SessionScoped public class Principal { private UIPanelMenu menu; private UIPanelMenuGroup group; private UIPanelMenuItem item; private UICommandButton button; private String paginaAtual; private String texto; public Principal() { setPaginaAtual("/pages/xhtml/inicial.xhtml"); } public void setMenu(UIPanelMenu menu) { this.menu = menu; } public void nada() { // System.out.println("funciona mano"); } public UIPanelMenu getMenu() { FacesContext ctx = FacesContext.getCurrentInstance(); Application app = ctx.getApplication(); menu = new UIPanelMenu(); ModulosDAO modulosDAO = new ModulosDAO(new HibernateUtil()); for (Modulos modulo : modulosDAO.listarTodos()) { group = new UIPanelMenuGroup(); group.setName("modulo_" + modulo.getId()); group.setLabel(modulo.getNome()); for (ItensModulo menuItem : modulo.getItensModulo()) { //cria o methodo action Class[] param = {}; MethodExpression expression = app.getExpressionFactory() .createMethodExpression(ctx.getELContext(), "#{principal.nada}", String.class, param); //cria uma expressão de valor ValueExpression valueExpression = FacesContext.getCurrentInstance().getApplication().getExpressionFactory(). createValueExpression(ctx.getELContext(), "#{principal.paginaAtual}", String.class); //cria um html Action parameter UIParameter action = new UIParameter(); action.setName("action_nome" + menuItem.getId()); action.setValue(menuItem.getPagina()); action.setAssignToExpression(valueExpression); action.setValueExpression(null, valueExpression); // .setAssignToBinding(valueExpression); item = new UIPanelMenuItem(); item.setLabel(menuItem.getNome()); item.setName("item_nome" + menuItem.getId()); item.setRender("principal"); item.setActionExpression(expression); item.addActionListener(action); item.getChildren().add(action); // <a4j:commandButton value="mudar" render="principal"> // <a4j:param value="treta mano" assignTo="#{principal.paginaAtual}"/> // </a4j:commandButton> group.getChildren().add(item); } menu.getChildren().add(group); } return menu; } public void setItem(UIPanelMenuItem item) { this.item = item; } public UIPanelMenuItem getItem() { return item; } public void setGroup(UIPanelMenuGroup group) { this.group = group; } public UIPanelMenuGroup getGroup() { return group; } public void setTexto(String texto) { this.texto = texto; } public String getTexto() { return texto; } public void setPaginaAtual(String paginaAtual) { this.paginaAtual = paginaAtual; System.out.println(paginaAtual); } public String getPaginaAtual() { return paginaAtual; } public void setButton(UICommandButton button) { this.button = button; } public UICommandButton getButton() { return button; } }
Version 3.x
package br.com.sixcred.ManagedBeans; import java.util.ArrayList; import java.util.List; import javax.el.MethodExpression; import javax.el.ValueExpression; import javax.faces.application.Application; import javax.faces.context.FacesContext; import org.ajax4jsf.component.html.HtmlActionParameter; import org.richfaces.component.html.HtmlPanelMenu; import org.richfaces.component.html.HtmlPanelMenuGroup; import org.richfaces.component.html.HtmlPanelMenuItem; import br.com.sixcred.EJBeans.DAO.ModulosDAO; import br.com.sixcred.EJBeans.bean.ItensModulo; import br.com.sixcred.EJBeans.bean.Modulos; import br.com.sixcred.EJBeans.util.HibernateUtil; public class Principal { private HtmlPanelMenu menu; private HtmlPanelMenuGroup group; private HtmlPanelMenuItem item; private String paginaAtual; private String texto; public Principal() { } public void setMenu(HtmlPanelMenu menu) { this.menu = menu; } public void nada() { // System.out.println("funciona mano"); } public HtmlPanelMenu getMenu() { FacesContext ctx = FacesContext.getCurrentInstance(); Application app = ctx.getApplication(); menu = new HtmlPanelMenu(); ModulosDAO modulosDAO = new ModulosDAO(new HibernateUtil()); for (Modulos modulo : modulosDAO.listarTodos()) { group = new HtmlPanelMenuGroup(); group.setName("modulo_" + modulo.getId()); group.setLabel(modulo.getNome()); for (ItensModulo menuItem : modulo.getItensModulo()) { //cria o methodo action Class[] param = {}; MethodExpression expression = app.getExpressionFactory() .createMethodExpression(ctx.getELContext(), "#{principal.nada}", String.class, param); //cria uma expressão de valor ValueExpression valueExpression = FacesContext.getCurrentInstance().getApplication().getExpressionFactory(). createValueExpression(ctx.getELContext(), "#{principal.paginaAtual}", String.class); //cria um html Action parameter HtmlActionParameter action = new HtmlActionParameter(); action.setName("action_nome" + menuItem.getId()); action.setValue(menuItem.getPagina()); action.setAssignToBinding(valueExpression); item = new HtmlPanelMenuItem(); item.setLabel(menuItem.getNome()); item.setName("item_nome" + menuItem.getId()); item.setReRender("principal"); item.setActionExpression(expression); item.addActionListener(action); item.getChildren().add(action); group.getChildren().add(item); } menu.getChildren().add(group); } return menu; } public void setItem(HtmlPanelMenuItem item) { this.item = item; } public HtmlPanelMenuItem getItem() { return item; } public void setGroup(HtmlPanelMenuGroup group) { this.group = group; } public HtmlPanelMenuGroup getGroup() { return group; } public void setTexto(String texto) { this.texto = texto; } public String getTexto() { return texto; } public void setPaginaAtual(String paginaAtual) { this.paginaAtual = paginaAtual; } public String getPaginaAtual() { return paginaAtual; } }