Validação e JSF

4 respostas
davidbuzatto

Pessoal, é o seguinte.

Estou terminando um sistema e agora só falta eu fazer a validação dos usuários em cada página, p/ que um usuário não logado ou que não tenha permissão para acessar uma página seja barrado em algumas ações.

Em um sistema que fiz usando Struts eu fazia assim:
Quando o usuário loga, eu guardo um objeto na sessão chamado “usuario”, e em cada jsp eu uso um if do jstl para verificar se o objeto usuario da sessão está vazio e se não estiver que tipo de usuário ele é. Assim consigo controlar o que um usuário pode ou não ver.

Já no jsf ta meio complicado. Estou tentando aplicar o mesmo método que apliquei no struts mas está dando alguns paus.

Primeiro, como eu uso o JSF 1.1, eu não consigo fazer o jstl funcionar direito, sendo assim descartei a opção de usar o if ou outra tag de controle.

Então tentei usar o atributo rendered das tags do jsf, mas é engraçado que em algumas tags (como o subview) o rendered não funciona. O bom seria usar o if mesmo, pq validaria apenas uma vez, ao invés de passar tag por tag (as tags mais externas é claro) verificando.

Nesse sistema eu faco a mesma coisa, quando o usuário loga, é inserido um objeto que representa o mesmo na sessão.

Gostaria de saber o que fazer. Eu queria usar o JSF 1.2, mas ele depende da especificação 2.1 do jsp, e o meu container de servlets (tomcat 5.5.17) implementa o jsp 2.0

Então fica a pergunta, como fazer esse tipo de validação?

Aguardo resposta!

Obrigado!

4 Respostas

robson_vs

cara vc pode fazer de duas formas usar facelets q é uma maneira de usar JSF 1.2 no tomcat 5.5 ou então vc criar um filter para fazer a validação do seus usuários ou então até mesmo os dois juntos facelets e filter.

P

davidbuzatto,

vc poderia usar algum listener, implementando por exemplo PhaseListener.
É tipo um filtro e a cada requisição ele é chamado…

Ae vc deve implememtar um metodo da interface, por exemplo o

public void afterPhase(PhaseEvent event)

e nele verificar se o usuario tem acesso a pagina que esta sendo acessada…

eu fiz isso pra verificar se o usuario estava logado, um pouco diferente do seu caso…mas talvez ja te de uma luz…

[]'s

davidbuzatto

pc, vc poderia me dar um exemplo prático de como fazer isso?

Escrevi minha classe implementando o PhaseListener, mas gostaria de saber como devo configurar essa minha classe para ela ser invocada e também gostaria de saber qual PhaseId devo retornar.

Obrigado!

kicolobo

Implemente um filtro padrão J2EE mesmo que já resolve seu problema.

Criado 15 de fevereiro de 2007
Ultima resposta 16 de fev. de 2007
Respostas 4
Participantes 4