voyent
Problem with ice:menuBar  XML
Forum Index -> General Help
Author Message
ELKIN

Joined: 31/Dec/2015 08:04:44
Messages: 2
Offline


hello forum people,

The problem I have is this: I am putting the menu in a dynamic way by means of a bean and I use a page to build the menu with ace's atiquetas: menuBar and ace: menuItem as it says in the icefaces tutorial in http: // icefaces- showcase.icesoft.org/showcase.jsf?grp=ace:menuBar, now what I want is that when I take action on the menu, I execute the method and refresh the component that I call on the main page. I leave the code

I'm using was9, icefaces 4.2.0

menu.xhtml
[/code]
<div xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:ace="http://www.icefaces.org/icefaces/components"
xmlns:icecore="http://www.icefaces.org/icefaces/core"
xmlns:f="http://java.sun.com/jsf/core">

<h:form>
<ace:menuBar id="menuBar" forceMenuUpdate="true"
autoSubmenuDisplay="true">
<c:forEach begin="0" items="#{menuBean.modulosOrdenados}"
var="modulo">
<ace:submenu label="#{modulo.nombre}" autoSubmenuDisplay="true">
<c:forEach begin="0" items="#{modulo.grupoAcciones}" var="ga">
<c:set var="val" value="#{ga.icono}" />
<c:choose>
<c:when test="${empty val}">
<ace:submenu label="#{ga.nombre}">
<c:forEach begin="0" items="#{ga.acciones}" var="acc">
<ace:menuItem value="#{acc.nombre}" icon="#{acc.icono}"
actionListener="#{menuBean.cambiarPagina}">
<f:param name="opcion" value="#{acc.nombre}" />
</ace:menuItem>
</c:forEach>
</ace:submenu>
</c:when>
<c:otherwise>
<ace:menuItem value="#{ga.nombre}" icon="#{ga.icono}"
actionListener="#{menuBean.cambiarPagina}">
<f:param name="opcion" value="#{ga.nombre}" />
</ace:menuItem>
</c:otherwise>
</c:choose>
</c:forEach>
</ace:submenu>
</c:forEach>
</ace:menuBar>
</h:form>
</div>

MenuBean.java

hello forum people,

the problem that I have is the following I am putting the menu in a dynamic way by means of a bean and I use the atiquetas of ace: menuBar and ace: menuItem where I am setting as it says in the tutorial of icefaces in http: // icefaces- showcase.icesoft.org/showcase.jsf?grp=ace:menuBar and I can not get the listener in the item to change the page I pass the code that I have

Here I put the menu
menu.xhtml
[/code]
<div xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:ace="http://www.icefaces.org/icefaces/components"
xmlns:icecore="http://www.icefaces.org/icefaces/core"
xmlns:f="http://java.sun.com/jsf/core">

<h:form>
<ace:menuBar id="menuBar" forceMenuUpdate="true"
autoSubmenuDisplay="true">
<c:forEach begin="0" items="#{menuBean.modulosOrdenados}"
var="modulo">
<ace:submenu label="#{modulo.nombre}" autoSubmenuDisplay="true">
<c:forEach begin="0" items="#{modulo.grupoAcciones}" var="ga">
<c:set var="val" value="#{ga.icono}" />
<c:choose>
<c:when test="${empty val}">
<ace:submenu label="#{ga.nombre}">
<c:forEach begin="0" items="#{ga.acciones}" var="acc">
<ace:menuItem value="#{acc.nombre}" icon="#{acc.icono}"
actionListener="#{menuBean.cambiarPagina}">
<f:param name="opcion" value="#{acc.nombre}" />
</ace:menuItem>
</c:forEach>
</ace:submenu>
</c:when>
<c:otherwise>
<ace:menuItem value="#{ga.nombre}" icon="#{ga.icono}"
actionListener="#{menuBean.cambiarPagina}">
<f:param name="opcion" value="#{ga.nombre}" />
</ace:menuItem>
</c:otherwise>
</c:choose>
</c:forEach>
</ace:submenu>
</c:forEach>
</ace:menuBar>
</h:form>
</div>

Here I put the menuBean
package ce.sisred.seguridad.bean;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.CustomScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import ce.sisred.seguridad.list.AccionesDto;
import ce.sisred.seguridad.list.GrupoAccion;
import ce.sisred.seguridad.list.Modulo;
import ce.sisred.seguridad.modelo.Accion;
import ce.sisred.seguridad.modelo.Rol;
import ce.sisred.seguridad.service.SeguridadService;
import ce.sisred.util.FacesUtils;

@ManagedBean(name = "menuBean")
@CustomScoped(value = "#{window}")
public class MenuBean {

@EJB
SeguridadService seguridadService;

@ManagedProperty("#{loginBean}")
private LoginBean login;

private String rol;

private String ambiente = "0";

private boolean activo;

private String persona;

private boolean visible;

private Set<Modulo> modulosOrdenados;

/** acciones:. */
private List<Accion> acciones;

/** modulos:. */
private List<Modulo> modulos;

private String url = new String("/secured/welcome.xhtml");

public void validarAct() {
persona = null;
activo = true;
visible = false;
persona = login.getNick();
if (persona == null) {
activo = false;
FacesUtils.redirec("login.xhtml");
} else {
armarMenu();
}
}

public void restaura() {
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
persona = null;
visible = false;
activo = true;
}

public Rol armarMenu() {
Rol r = seguridadService.getRolxId(login.getRolid(), ambiente);
modulosOrdenados = new TreeSet<Modulo>();
List<Accion> accionesPadre = null;
Long codigoDelRol = r.getRol();

try {
accionesPadre = seguridadService.getAccionesPadres(ambiente);
} catch (Exception e) {
e.printStackTrace();
}

if (accionesPadre != null && accionesPadre.size() > 0) {
for (Accion accionPadre : accionesPadre) {
List<Accion> accionesPorPadre = new ArrayList<Accion>();
Integer codigoDeLaAccionPadre = accionPadre.getAccion();
try {
accionesPorPadre = seguridadService.getAccionesXPadreXRol(codigoDeLaAccionPadre, codigoDelRol,
login.getNick(), ambiente);
} catch (Exception e) {
e.printStackTrace();
}
Set<GrupoAccion> grupoAcciones = new TreeSet<GrupoAccion>();
if (accionesPorPadre != null && accionesPorPadre.size() > 0) {
for (Accion accionPorPadre : accionesPorPadre) {
GrupoAccion grupoAccion = new GrupoAccion();
grupoAccion.setId(accionPorPadre.getAccion());
grupoAccion.setNombre(accionPorPadre.getNombre());
grupoAccion.setIcono(accionPorPadre.getIcono());
grupoAcciones.add(grupoAccion);
}
}
List<Accion> grupoAccionesPorPadre = new ArrayList<Accion>();
try {
grupoAccionesPorPadre = seguridadService.getGrupoAccionesXPadre(codigoDeLaAccionPadre, ambiente);
} catch (Exception e) {
e.printStackTrace();
}
for (Accion grupoAccionPorPadre : grupoAccionesPorPadre) {
/** aqui voy */
List<Accion> accionesDelGrupoAccion = new ArrayList<Accion>();
Integer codigoDelGrupoAccionPadre = grupoAccionPorPadre.getAccion();
try {
accionesDelGrupoAccion = seguridadService.getAccionesXPadreXRol(codigoDelGrupoAccionPadre,
codigoDelRol, login.getNick(), ambiente);
} catch (Exception e) {
e.printStackTrace();
}
GrupoAccion grupoAccion = new GrupoAccion();
Set<AccionesDto> accionesDto = new TreeSet<AccionesDto>();
if (accionesDelGrupoAccion != null && accionesDelGrupoAccion.size() > 0) {
for (Accion accionDelGrupoAccion : accionesDelGrupoAccion) {
AccionesDto accion = new AccionesDto();
accion.setId(accionDelGrupoAccion.getAccion());
accion.setNombre(accionDelGrupoAccion.getNombre());
accion.setUrl(accionDelGrupoAccion.getUrl());
accion.setIcono(accionDelGrupoAccion.getIcono());
accionesDto.add(accion);
}
grupoAccion.setId(grupoAccionPorPadre.getAccion());
grupoAccion.setNombre(grupoAccionPorPadre.getNombre());
grupoAccion.setIcono(grupoAccionPorPadre.getIcono());
grupoAccion.setAcciones(accionesDto);
grupoAcciones.add(grupoAccion);
}
}
if (grupoAcciones != null && grupoAcciones.size() > 0) {
Modulo modulo = new Modulo();
modulo.setId(accionPadre.getAccion());
modulo.setNombre(accionPadre.getNombre());
modulo.setUrl(accionPadre.getUrl());
modulo.setGrupoAcciones(grupoAcciones);
modulosOrdenados.add(modulo);
}
}
}
return r;
}

public void cambiarPagina(ActionEvent e) {
System.out.println("paso por cambiar pag");
String opcion = FacesUtils.getRequestParameter("opcion");
url = seguridadService.getUrlXAccionNombre(opcion, ambiente);
FacesContext.getCurrentInstance().renderResponse();

}

@PostConstruct
public void initBean() {
validarAct();
}

public LoginBean getLogin() {
return login;
}

public void setLogin(LoginBean login) {
this.login = login;
}

public String getRol() throws IOException {
return rol;
}

public void setRol(String rol) {
this.rol = rol;
}

public boolean isActivo() {
return activo;
}

public void setActivo(boolean activo) {
this.activo = activo;
}

public String getPersona() {
return persona;
}

public void setPersona(String persona) {
this.persona = persona;
}

public Set<Modulo> getModulosOrdenados() {
return modulosOrdenados;
}

public void setModulosOrdenados(Set<Modulo> modulosOrdenados) {
this.modulosOrdenados = modulosOrdenados;
}

public List<Accion> getAcciones() {
return acciones;
}

public void setAcciones(List<Accion> acciones) {
this.acciones = acciones;
}

public List<Modulo> getModulos() {
return modulos;
}

public void setModulos(List<Modulo> modulos) {
this.modulos = modulos;
}

public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}

public boolean isVisible() {
return visible;
}

public void setVisible(boolean visible) {
this.visible = visible;
}

}

Here I put the index page

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:ace="http://www.icefaces.org/icefaces/components"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<h:head>
<title>.:SISRED:.</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="icon" type="image/x-icon"
href="#{resource['sisred-layout:imagen/favicon.ico']}" />
<h:outputStylesheet name="/css/styleLogin.css" library="sisred-layout" />
</h:head>
<h:body
style="background-image: url('imagenes/bg.png');background-repeat: repeat-x;">
<f:view contentType="text/html">
<ui:composition template="/facelets/mainTemplate.xhtml">
<ui:define name="header">
<ui:include src="/facelets/header.xhtml" />
</ui:define>
<ui:define name="body">
<div class="datoUsuario">
<h:form>
<h:panelGrid columns="3">
<h:outputText id="urlin" value="#{loginBean.urlt}"
rendered="false" />
<h:outputText id="datosLog" style="text-transform: uppercase;"
value="#{loginBean.nick} / #{loginBean.rol}" />
<h:commandButton id="salir" alt="Salir"
image="/imagenes/Stack.png" action="#{loginBean.logout}"
type="button" />
</h:panelGrid>
</h:form>
</div>
<table style="margin-left: 0px; margin-top: 17px">
<tr>
<td valign="top" style="margin-top: 0pt; margin-left: 0pt;">
<ui:include src="/menu.xhtml"></ui:include>
</td>
</tr>
</table>
<div align="center">
<table>
<tr>
<td valign="top"><ui:include src="#{menuBean.url}" /></td>
</tr>
</table>
</div>
</ui:define>
<ui:define name="footer">
<div style="vertical-align: bottom;">
<ui:include src="/facelets/footer.xhtml" />
</div>
</ui:define>
</ui:composition>
</f:view>
</h:body>

</html>


who can help me?

 
Forum Index -> General Help
Go to:   
Powered by JForum 2.1.7ice © JForum Team