1 Universidade Positivo
Paulo Ricardo Lisboa de Almeida
Regras de Navegação e Templates
Primeiras páginas2 Universidade Positivo
Instanciando a aplicação
Clone o projeto da aula com o Git (disponível no site da disciplina)
Suba o banco de dados
Crie as tabelas e rode o script de inserts
Utilize o tutorial disponível no site da disciplina Inicialize o Eclipse e importe o Projeto
3 Universidade Positivo
Regras de navegação
Desejamos redirecionar o usuário para determinada página após alguma ação
4 Universidade Positivo
Regras de Navegação
Os métodos chamados por um botão da tela podem retornar uma String
Essa string será utilizada como “hash” de navegação
public class LoginMB { // ...
public String login() {
try{
if(cpf == 1) {//loga somente se digitarmos 1
Funcionario f = new Funcionario();
f.setCpf(cpf); // esse funcionário não existe no banco! Esse é somente um teste
f.setDataAdmissao(new Date());
f.setId(1L);
f.setNascimento(new Date());
f.setNome("Funcionário teste");
f.setTipoFuncionario(new TipoFuncionario());
userMB.setFuncionario(f);
return "index"; }else {
JSFMessageUtil.sendWarningMessageToUser("Login incorreto!"); }
}catch(Exception e){
e.printStackTrace();//LOGAR!
JSFMessageUtil.sendWarningMessageToUser("Ocorreu um erro na aplicação!"); }
return null; }
// ... }
5 Universidade Positivo
No faces-Config
Adicionamos as regras de navegação no faces-config // ...
<!-- ManagedBeans -->
<managed-bean>
<managed-bean-name>loginMB</managed-bean-name>
<managed-bean-class>com.up.clinicaveterinaria.mb.LoginMB</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>userMB</property-name><!-- injetar o bean userMB na propriedade userMB do bean loginMB -->
<property-class>com.up.clinicaveterinaria.mb.UserMB</property-class>
<value>#{userMB}</value>
</managed-property> </managed-bean>
<managed-bean>
<managed-bean-name>userMB</managed-bean-name>
<managed-bean-class>com.up.clinicaveterinaria.mb.UserMB</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope> </managed-bean> <!-- Fim ManagedBeans --> <!-- Regras de Navegação --> <navigation-rule> <from-view-id>*</from-view-id> <navigation-case>
<from-outcome>index</from-outcome>
<to-view-id>/pages/index.xhtml</to-view-id> <redirect />
</navigation-case> </navigation-rule>
<!-- Fim Regras de Navegação → // ...
6 Universidade Positivo
Regras de Nevagação
From-view-id → a partir de qual view a regra é válida * significa todas
From-outcome → qual a string que gera esse redirecionamento
No exemplo é a string index
To-view-id → qual é a página que deve ser renderizada Temos aqui um “controller”
7 Universidade Positivo
Teste
Suba a aplicação e teste o resultado
Note que se digitarmos o cpf válido (no caso 1) somos redirecionados para index.html
Perceba também que não temos segurança alguma no momento
Se o usuário digitar o endereço completo da página de index, ele consegue acessar mesmo sem ter logado
localhost:8080/clinicavet/pages/index.xhtml
Um erro absurdo, mas que muitas aplicações comentem
Nas próximas aulas esse problema será corrigido através de filtros
8 Universidade Positivo
Criando um modelo padrão para as páginas
Insira o arquivo template.xhtml disponível na página da disciplina no diretório pages
Esse template define um modelo que todas páginas devem seguir, exceto a de login
Todas páginas na nossa aplicação terão acesso a um menu principal
Note a tag <ui:insert name="main" />
Isso define que as páginas baseadas no template devem definir uma subpágina em um componente chamado main
9 Universidade Positivo
A página de index
A página index.xhtml então fica
Utilizamos ui:composition
Passamos qual a página estamos componto (template) ui:define
Define qual o conteúdo será inserido dentro de main, definido no template
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:p="http://primefaces.org/ui"> <h:body>
<ui:composition template="/pages/template.xhtml"> <ui:define name="main">
<div> Olá mundo! </div> </ui:define> </ui:composition> </h:body> </html>
10 Universidade Positivo
Fim
Pesquise sobre os demais componentes que podemos utilizar
11 Universidade Positivo
Referências
MANN, K. Java Server Faces In Action. Dreamtech Press, 2005. ISBN 9788177224191.
ZAMBON, G. Beginning JSP, JSF and Tomcat: Java Web Development. Apress, 2012. (Expert’s voice in Java). ISBN 9781430246237.
Documentação Oracle