Estou criando um menu dinâmico em meu projeto.
No momento de montar o menu eu dou um setUrl. Ele monta o menu tudo certinho.
O problema é que quando eu clico a primeira vez no menuItem, ele chama a URL correta isso porque estou na raiz de minha aplicação.
Agora quando eu clico em um outro menuItem, ele mantem a URL que ele chamou e adiciona a nova na frente ficando assim:
ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
HttpServletRequest request = ((HttpServletRequest) context.getRequest());
MenuItem mi = new MenuItem();
mi.setValue(m.getNome());
mi.setUrl(request.getContextPath()+m.getUrl());
Se alguém tiver alguma sugestão, até mesmo para ocultar o endereço completo.
[quote=aprendiz.devel]E ae galera,
Estou criando um menu dinâmico em meu projeto.
No momento de montar o menu eu dou um setUrl. Ele monta o menu tudo certinho.
O problema é que quando eu clico a primeira vez no menuItem, ele chama a URL correta isso porque estou na raiz de minha aplicação.
Agora quando eu clico em um outro menuItem, ele mantem a URL que ele chamou e adiciona a nova na frente ficando assim:
Só vi sua mensagem depois que já tinha enviado.
Então, eu busquei em alguns lugares e só achei essa forma de fazer, funcionou legal, é mais ou menos parecida com a sua solução?
Estou buscando uma maneira de esconder a URL completa do usuário, conhece alguma maneira?
Valeu amigo,
[quote=Valeio Bezerra]eita cara eu fiz isso, mas o código tá em casa e no momento estou no trabalho.
Não, isso seria mais um capricho mesmo, e também reforçar um pouco mais a segurança.
Para permissões estou utilizando o Spring Security.
Nesse momento estou adaptando o Spring Security no menu dinâmico, tu usa ele também?
Não sei se já conhece esse framework, eu acabei conhecendo ele faz pouco tempo e está sendo bem proveitoso.
Esse link tem um tutorialzinho bem bacana, caso se interessar.
Conheci é bom até, mas não gostei muito, por que eu queria que as permissões do usuário que vou usar é dinâmica, tipo, um usuário pode ter acesso a 3 telas, onde só pode incluir, outro tem a 50 e por ai vai, não definido por “ROLE_ADMIN” essas coisas, por isso optei por não usar o spring.
Então, eu preciso disso também.
Estou fazendo algumas adaptações, só que as regras são por telas, no meu caso estou chamando de ‘casos de uso’.
Aí fica:
Eu pensei nisso o problema é que no futuro quem sabe pode ser que tenha diversos módulos, contas a pagar, a receber, estoque entre outros, ai vai ficar muita coisa por isso eu faço tudo isso na mão, tenho cadastro de módulos, programas e autorizações de usuário.
Eu já tive oportunidade de trabalhar com um ERP gigantesco, era utilizado esse controle que você comenta.
Realmente, é mais prático pois o controle pode até ficar na mão do usuário.
Mas assim, levantando alguns problemas que identifiquei nesse caso.
Se caso o usuário conheça a URL de uma tela, como vai controlar o seu acesso sem ser pelo menu?
Tá dando trabalho no começo, mas depois de pronto é só desenvolver as novas telas e pronto, não vou ter mais nenhum trabalho com códigos, já com spring no seu caso toda vez que fizer uma nova vai ter que botar um “ROLE_CADASTRO_TELAX”.
Eu já tive oportunidade de trabalhar com um ERP gigantesco, era utilizado esse controle que você comenta.
Realmente, é mais prático pois o controle pode até ficar na mão do usuário.
Mas assim, levantando alguns problemas que identifiquei nesse caso.
Se caso o usuário conheça a URL de uma tela, como vai controlar o seu acesso sem ser pelo menu?
Eu tenho um classe PadraoBean onde meus beans herdam dele, cada tela que eu faço tem seu código, eu passo pelo construtor o parâmetro e o padraoBean verifica se ele tem autorização, se não tiver ele redireciona dizendo que não tem acesso, se o usuário não tiver logado ele vai pra pagina de login.
Exemplo:
public class ClienteBean() extends PadraoBean {
public ClienteBean() {
super("codigoModulo", "codigoPrograma");
}
}
Eu já tive oportunidade de trabalhar com um ERP gigantesco, era utilizado esse controle que você comenta.
Realmente, é mais prático pois o controle pode até ficar na mão do usuário.
Mas assim, levantando alguns problemas que identifiquei nesse caso.
Se caso o usuário conheça a URL de uma tela, como vai controlar o seu acesso sem ser pelo menu?
Eu tenho um classe PadraoBean onde meus beans herdam dele, cada tela que eu faço tem seu código, eu passo pelo construtor o parâmetro e o padraoBean verifica se ele tem autorização, se não tiver ele redireciona dizendo que não tem acesso, se o usuário não tiver logado ele vai pra pagina de login.
Exemplo:
public class ClienteBean() extends PadraoBean {
public ClienteBean() {
super("codigoModulo", "codigoPrograma");
}
}
Acabei de resolver aquele problema da URL de forma mais elegante.
Se colocar ‘/’ antes da string ele renderiza de forma diferente, aí funciona direitinho.