Hi Guys,
My menu does not highlight the item when i click. I can navigate normal just does not highlight the menu i'm.
I need to do something?
Item Menu does not highlighted
Forum rules
Please note that response time for technical support is within 3-5 business days.
Please note that response time for technical support is within 3-5 business days.
-
- Posts: 9
- Joined: 03 Feb 2023, 14:41
Hi, here it is.
menu.xhtml:
Code: Select all
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:pa="http://primefaces.org/barcelona">
<div class="layout-sidebar">
<pa:tabMenu>
<pa:tab icon="pi pi-fw pi-microsoft" title="Gerenciamento">
<h:form id="menu-form">
<pa:menu widgetVar="barcelonaMenuWidget" model="#{menuController.menuModel}" />
</h:form>
</pa:tab>
<pa:tab icon="pi pi-fw pi-inbox" title="Inbox">
<div class="inbox-tab">
<ul>
<li class="clearfix">
<p:graphicImage name="images/avatar1.png" library="barcelona-layout" width="45"/>
<span class="name">Joshua Williams</span>
<span class="message">Reports attached</span>
</li>
<li class="clearfix">
<p:graphicImage name="images/avatar1.png" library="barcelona-layout" width="45"/>
<span class="name">Joshua Williams</span>
<span class="message">About the meeting</span>
</li>
<li class="clearfix">
<p:graphicImage name="images/avatar2.png" library="barcelona-layout" width="45"/>
<span class="name">Emily Clark</span>
<span class="message">TODO Update</span>
</li>
<li class="clearfix">
<p:graphicImage name="images/avatar3.png" library="barcelona-layout" width="45"/>
<span class="name">Tim Johnson</span>
<span class="message">Expense Reports</span>
</li>
<li class="clearfix">
<p:graphicImage name="images/avatar4.png" library="barcelona-layout" width="45"/>
<span class="name">David Stark</span>
<span class="message">Rating Reviews</span>
</li>
</ul>
<div class="inbox-labels">
<span>Labels</span>
<ul>
<li class="clearfix">
<span class="inbox-label">Work</span>
<span class="inbox-label-badge">4</span>
</li>
<li class="clearfix">
<span class="inbox-label">Personel</span>
<span class="inbox-label-badge">2</span>
</li>
<li class="clearfix">
<span class="inbox-label">Shared</span>
<span class="inbox-label-badge">3</span>
</li>
<li class="clearfix">
<span class="inbox-label">General</span>
<span class="inbox-label-badge">5</span>
</li>
</ul>
</div>
</div>
</pa:tab>
<pa:tab icon="pi pi-fw pi-calendar" title="Calendar">
<div class="calendar-tab">
<ul>
<li class="clearfix">
<div class="calendar-event-date">
<span>21</span>
<span>OCT</span>
</div>
<div class="calendar-event-detail">
<span class="calendar-event-title">Project Meeting</span>
<i class="pi pi-map-marker"></i>
<span class="calendar-event-location">Chicago</span>
</div>
</li>
<li class="clearfix">
<div class="calendar-event-date">
<span>13</span>
<span>NOV</span>
</div>
<div class="calendar-event-detail">
<span class="calendar-event-title">Presentation 1</span>
<i class="pi pi-map-marker"></i>
<span class="calendar-event-location">New York</span>
</div>
</li>
<li class="clearfix">
<div class="calendar-event-date">
<span>01</span>
<span>DEC</span>
</div>
<div class="calendar-event-detail">
<span class="calendar-event-title">Presentation 2</span>
<i class="pi pi-map-marker"></i>
<span class="calendar-event-location">New York</span>
</div>
</li>
<li class="clearfix">
<div class="calendar-event-date">
<span>25</span>
<span>DEC</span>
</div>
<div class="calendar-event-detail">
<span class="calendar-event-title">New Year Party</span>
<i class="pi pi-map-marker"></i>
<span class="calendar-event-location">San Francisco</span>
</div>
</li>
</ul>
</div>
</pa:tab>
<pa:tab icon="pi pi-fw pi-chart-bar" title="Projects">
<div class="projects-tab">
<ul>
<li class="clearfix">
<i class="pi pi-sliders-h"></i>
<span class="project-title">Current Tasks</span>
<span>3 open, 4 closed</span>
<div class="project-progressbar">
<div class="project-progressbar-value" style="width: 50%"></div>
</div>
</li>
<li class="clearfix">
<i class="fa fa-youtube"></i>
<span class="project-title">YouTube Videos</span>
<span>12 new, 2 subscribers</span>
<div class="project-progressbar">
<div class="project-progressbar-value" style="width: 20%"></div>
</div>
</li>
<li class="clearfix">
<i class="pi pi-comment"></i>
<span class="project-title">Unread Posts</span>
<span>24 new messages</span>
<div class="project-progressbar">
<div class="project-progressbar-value" style="width: 65%"></div>
</div>
</li>
<li class="clearfix">
<i class="pi pi-heart"></i>
<span class="project-title">Favorite Contacts</span>
<span>8 total, 4 approved</span>
<div class="project-progressbar">
<div class="project-progressbar-value" style="width: 80%"></div>
</div>
</li>
<li class="clearfix">
<i class="pi pi-lock"></i>
<span class="project-title">Verified Users</span>
<span>90 total, 45 pending</span>
<div class="project-progressbar">
<div class="project-progressbar-value" style="width: 90%"></div>
</div>
</li>
</ul>
</div>
</pa:tab>
<pa:tab icon="pi pi-fw pi-user" title="Team">
<div class="team-tab">
<ul>
<li class="clearfix">
<p:graphicImage name="images/avatar1.png" library="barcelona-layout" width="45"/>
<span class="name">Joshua Williams</span>
<span class="location">New York, USA</span>
</li>
<li class="clearfix">
<p:graphicImage name="images/avatar2.png" library="barcelona-layout" width="45"/>
<span class="name">Jennifer Clarkson</span>
<span class="location">Paris, France</span>
</li>
<li class="clearfix">
<p:graphicImage name="images/avatar3.png" library="barcelona-layout" width="45"/>
<span class="name">Tim Johnson</span>
<span class="location">London, United Kingdom</span>
</li>
<li class="clearfix">
<p:graphicImage name="images/avatar4.png" library="barcelona-layout" width="45"/>
<span class="name">David Stark</span>
<span class="location">San Francisco, USA</span>
</li>
</ul>
</div>
</pa:tab>
</pa:tabMenu>
</div>
</ui:composition>
Code: Select all
package br.com.rubytech.mystock.web.controller.sistema;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.context.FacesContext;
import org.primefaces.model.menu.BaseMenuModel;
import org.primefaces.model.menu.DefaultMenuItem;
import org.primefaces.model.menu.DefaultSubMenu;
import org.primefaces.model.menu.DefaultSubMenu.Builder;
import org.primefaces.model.menu.MenuModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.web.context.WebApplicationContext;
import br.com.rubytech.mystock.persistence.dao.seguranca.CargoPermissaoDaoImpl;
import br.com.rubytech.mystock.persistence.dao.seguranca.UsuarioDaoImpl;
import br.com.rubytech.mystock.persistence.entidade.seguranca.Usuario;
import br.com.rubytech.mystock.persistence.entidade.seguranca.UsuarioPermissao;
import br.com.rubytech.mystock.persistence.entidade.seguranca.UsuarioSubPermissao;
import br.com.rubytech.mystock.seguranca.SystemConfig;
import br.com.rubytech.mystock.service.impl.SegurancaServiceImpl;
import br.com.rubytech.mystock.web.controller.SystemController;
import br.com.rubytech.mystock.web.exception.SessionException;
import br.com.rubytech.mystock.web.menu.MenuItem;
import br.com.rubytech.mystock.web.menu.SubAcesso;
import br.com.rubytech.mystock.web.menu.SubMenu;
@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
@Controller("menuController")
public class MenuController extends SystemController {
private static final long serialVersionUID = 1L;
@Autowired
private CargoPermissaoDaoImpl cargoPermissaoDaoImpl;
@Autowired
private SegurancaServiceImpl segurancaServiceImpl;
@Autowired
private UsuarioDaoImpl usuarioDaoImpl;
private List<UsuarioPermissao> usuarioPermissaoLista;
private List<UsuarioSubPermissao> usuarioSubPermissaoLista;
private MenuModel menuModel;
private String novaSenha;
private String novaSenhaRepetida;
private Authentication autenticacao = SecurityContextHolder.getContext().getAuthentication();
private Usuario usuario = (Usuario) autenticacao.getPrincipal();
@Override
@PostConstruct
public void init() {
try {
updateMenu();
} catch (SessionException e) {
e.printStackTrace();
}
}
private boolean verificarAcesso(MenuItem menuItem) {
boolean temAcesso = false;
usuarioPermissaoLista = segurancaServiceImpl.procurarListaAcessosUsuario(usuario);
for (UsuarioPermissao usuarioPermissao : usuarioPermissaoLista) {
if (menuItem.getAcesso().equals(usuarioPermissao.getAcesso()) || verificarSubAcesso(menuItem, usuarioPermissao)) {
temAcesso = true;
}
}
return temAcesso;
}
private boolean verificarSubAcesso(MenuItem menuItem, UsuarioPermissao usuarioPermissao) {
boolean temAcesso = false;
usuarioSubPermissaoLista = segurancaServiceImpl.procurarListaSubAcessosUsuario(usuarioPermissao);
for (UsuarioSubPermissao usuarioSubPermissao : usuarioSubPermissaoLista) {
if (menuItem.getAcesso().equals(usuarioSubPermissao.getSubAcesso().getAcesso())) {
temAcesso = true;
}
}
return temAcesso;
}
private void updateMenu() throws SessionException {
if (menuModel == null) {
menuModel = new BaseMenuModel();
for (SubMenu subMenu : SubMenu.values()) {
if (subMenu.getMenuPai() == null) {
Builder builder = DefaultSubMenu.builder();
if (subMenu.getIcon() != null) {
builder.icon(subMenu.getIcon());
}
List<DefaultSubMenu> subMenuList = includeSubMenu(subMenu);
if (subMenuList.size() > 0) {
for (DefaultSubMenu defaultSubMenuChildren : subMenuList) {
builder.addElement(defaultSubMenuChildren);
}
}
List<DefaultMenuItem> menuItemList = includeMenuItem(subMenu);
if (menuItemList.size() > 0) {
for (DefaultMenuItem menuItem : menuItemList) {
builder.addElement(menuItem);
}
}
DefaultSubMenu defaultSubMenu = builder.label(subMenu.getDescricao()).build();
if (subMenu.getMenuPai() == null && menuItemList.size() > 0) {
menuModel.getElements().add(defaultSubMenu);
}
}
}
}
}
private List<DefaultSubMenu> includeSubMenu(SubMenu menu) throws SessionException {
List<DefaultSubMenu> subMenuList = new ArrayList<DefaultSubMenu>();
for (SubMenu subMenu : SubMenu.values()) {
if(menu.equals(subMenu.getMenuPai())) {
Builder builder = DefaultSubMenu.builder();
if (subMenu.getIcon() != null) {
builder.icon(subMenu.getIcon());
}
List<DefaultSubMenu> subMenuListN2 = includeSubMenu(subMenu);
if (subMenuListN2.size() > 0) {
for (DefaultSubMenu defaultSubMenuChildren : subMenuListN2) {
builder.addElement(defaultSubMenuChildren);
}
}
List<DefaultMenuItem> menuItemList = includeMenuItem(subMenu);
if (menuItemList.size() > 0) {
for (DefaultMenuItem itemMenu : menuItemList) {
builder.addElement(itemMenu);
}
}
DefaultSubMenu defaultSubMenu = builder.label(subMenu.getDescricao()).build();
// if (subMenuListN2.size() > 0 || subMenuList.size() > 0) {
subMenuList.add(defaultSubMenu);
// }
}
}
return subMenuList;
}
private List<DefaultMenuItem> includeMenuItem(SubMenu subMenu) throws SessionException {
List<DefaultMenuItem> menuItemList = new ArrayList<DefaultMenuItem>();
for (MenuItem menuItem : MenuItem.values()) {
if (subMenu.equals(menuItem.getSubMenu()) && verificarAcesso(menuItem)) {
if (menuItem.getUrl() != null) {
org.primefaces.model.menu.DefaultMenuItem.Builder menuItemBuilder = DefaultMenuItem.builder()
.value(menuItem.getDescricao()).url(SystemConfig.SYSTEM_CONTEXT_PATH + menuItem.getUrl());
if (menuItem.getIcon() != null) {
menuItemBuilder.icon(menuItem.getIcon());
}
DefaultMenuItem defaultMenuItem = menuItemBuilder.build();
menuItemList.add(defaultMenuItem);
}
}
}
return menuItemList;
}
public void alterarSenha() throws IOException {
if (novaSenha.equals(novaSenhaRepetida)) {
segurancaServiceImpl.alterarSenha(usuario, novaSenha);
infoMessage("Senha atualizada com sucesso!", "");
String url = FacesContext.getCurrentInstance().getExternalContext().getApplicationContextPath();
FacesContext.getCurrentInstance().getExternalContext().redirect(url + "/logout/");
}
}
/* Getters and Setters */
public MenuModel getMenuModel() {
return menuModel;
}
public void setMenuModel(MenuModel menuModel) {
this.menuModel = menuModel;
}
public CargoPermissaoDaoImpl getCargoPermissaoDaoImpl() {
return cargoPermissaoDaoImpl;
}
public void setCargoPermissaoDaoImpl(CargoPermissaoDaoImpl cargoPermissaoDaoImpl) {
this.cargoPermissaoDaoImpl = cargoPermissaoDaoImpl;
}
public SegurancaServiceImpl getSegurancaServiceImpl() {
return segurancaServiceImpl;
}
public void setSegurancaServiceImpl(SegurancaServiceImpl segurancaServiceImpl) {
this.segurancaServiceImpl = segurancaServiceImpl;
}
public UsuarioDaoImpl getUsuarioDaoImpl() {
return usuarioDaoImpl;
}
public void setUsuarioDaoImpl(UsuarioDaoImpl usuarioDaoImpl) {
this.usuarioDaoImpl = usuarioDaoImpl;
}
public String getNovaSenha() {
return novaSenha;
}
public void setNovaSenha(String novaSenha) {
this.novaSenha = novaSenha;
}
public String getNovaSenhaRepetida() {
return novaSenhaRepetida;
}
public void setNovaSenhaRepetida(String novaSenhaRepetida) {
this.novaSenhaRepetida = novaSenhaRepetida;
}
public Authentication getAutenticacao() {
return autenticacao;
}
public void setAutenticacao(Authentication autenticacao) {
this.autenticacao = autenticacao;
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public List<UsuarioPermissao> getUsuarioPermissaoLista() {
return usuarioPermissaoLista;
}
public void setUsuarioPermissaoLista(List<UsuarioPermissao> usuarioPermissaoLista) {
this.usuarioPermissaoLista = usuarioPermissaoLista;
}
public List<UsuarioSubPermissao> getUsuarioSubPermissaoLista() {
return usuarioSubPermissaoLista;
}
public void setUsuarioSubPermissaoLista(List<UsuarioSubPermissao> usuarioSubPermissaoLista) {
this.usuarioSubPermissaoLista = usuarioSubPermissaoLista;
}
}

-
- Posts: 9
- Joined: 03 Feb 2023, 14:41
Hi again,
I tried again and still didn't receive any errors.
Could you please add your code to the link provided below and send it to me?
https://github.com/primefaces/primefaces-test
I tried again and still didn't receive any errors.
Could you please add your code to the link provided below and send it to me?
https://github.com/primefaces/primefaces-test
-
- Posts: 9
- Joined: 03 Feb 2023, 14:41
Hello again. I tested it with a static menu, just like the demo and it worked perfectly. When I put the dynamic menu with model, it doesn't work, the problem must be in the model. Any idea?
-
- Information
-
Who is online
Users browsing this forum: No registered users and 2 guests