framework web 3 - jsf + spring boot

35
Frameworks para Desenvolvimento web em Java Aula 03 André Luiz Forchesatto

Upload: andre-luiz-forchesatto

Post on 23-Jun-2015

344 views

Category:

Documents


7 download

DESCRIPTION

Framework web 3 - JSF + Spring boot

TRANSCRIPT

Page 1: Framework web 3 - JSF + Spring boot

Frameworks para Desenvolvimento web em

JavaAula 03

André Luiz Forchesatto

Page 2: Framework web 3 - JSF + Spring boot

Planejamento

● Aula 03○ Spring com JSF

Page 3: Framework web 3 - JSF + Spring boot

JSF● API Java Server Faces;● Interface padrão de desenvolvimento web Java;● Modelo de interfaces baseada em eventos e

componentes;● Framework MVC (Model-View-Controller);

Page 4: Framework web 3 - JSF + Spring boot

Estrutura JSF

Page 5: Framework web 3 - JSF + Spring boot

Conceitos Principais JSF

● Componentes● Renderers● Managed-Beans● Ciclo de vida (Request Lifecycle)● Converter/Validators● Navegação● Eventos

Page 6: Framework web 3 - JSF + Spring boot

Componentes

● Separa lógica de negócio da apresentação;● Toda view possui uma hierarquia de

componentes;

Client Side h:form

h:input h:input h:input

Server Side

Page 7: Framework web 3 - JSF + Spring boot

Componentes● Os componentes são expressos em tags e uma pagina

JSP e em sua maioria são de interface com o usuário;● Os componentes padrões são divididos em dois grupos:● Faces Core: <f:view>, <f:loadBundle>, <f:param>● HTML wrappers: <h:dataTabe>, <h:inputText>● Componente = class + renderer + tag handler (JSP)

Page 8: Framework web 3 - JSF + Spring boot

Primeiros passos

● Criar um projeto web que seja um .war

● Adicionar a lib para jsf● Configurar o web.xml● Criar um arquivo faces-config.xml● Criar uma página de index

Page 9: Framework web 3 - JSF + Spring boot

Configurar faces-config.xml

Criar arquivo faces-config.xml

Page 10: Framework web 3 - JSF + Spring boot

Configurar faces-config.xml<?xml version="1.0" encoding="UTF-8"?><faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.

org/xml/ns/javaee/web-facesconfig_2_2.xsd"version="2.2">

</faces-config>

Page 11: Framework web 3 - JSF + Spring boot

Página index

Page 12: Framework web 3 - JSF + Spring boot

HTML wrappers - JSF

● Comando○ h:commandButton: Botão de submissão

de formulário○ h:commandLink: Link com ação

● Dados○ h:dataTable: Tabela associada a dados

● Imagens○ h:graphicImage: Uma imagem

Page 13: Framework web 3 - JSF + Spring boot

HTML wrappers - JSF● Mensagens

○ h:message: mensagens para um componente especifico

○ h:messages: mensagens globais da página● Entrada de dados

○ h:inputHidden: Campo oculto○ h:inputText: Campo simples para entrada de dados○ h:inputSecret: Campo para senha○ h:inputTextArea: Campo texto para entrada de

dados● Seleção verdadeiro ou falso

○ h:selectBooleanCheckbox: Campo de marcação verdadeiro ou falso

Page 14: Framework web 3 - JSF + Spring boot

HTML wrappers - JSF

● Saída de dados○ h:outputFormat: Texto formatado○ h:outputLabel: Rotulo de campo○ h:outputLink: Link sem ação○ h:outputText: Texto simples

● Painel○ h:panelGrid: Tabela para campos○ h:panelGroup: Agrupador de

componentes para aplicar formatação ou alimentamento

Page 15: Framework web 3 - JSF + Spring boot

HTML wrappers - JSF● Seleção única

○ h:SelectOneRadio: grupo de botões de radio○ h:SelectOneListbox: lista de seleção única○ h:SelectOneMenu: combobox de seleção única

● Seleção múltipla○ h:SelectManyCheckbox: checkboxes agrupados○ h:SelectManyListbox: lista de seleção múltipla○ h:SelectManyMenu: lista de seleção múltipla

Page 16: Framework web 3 - JSF + Spring boot

Faces Core● f:view: Elemento raiz da árvore de

componentes● f:ajax: Injeta comportamento ajax em

qualquer componente html● f:selectItem: Representa um item de uma

lista ou combo● f:selectItems: Representa a coleção de itens

de uma lista ou combo● f:converter: Converto objeto java em texto e

vice-versa

Page 17: Framework web 3 - JSF + Spring boot

Propriedades comunsPropriedade Tipo Valor Default Obrigatório

id String Não tem simvalue Object Não tem simrendered Boolean True nãoconverter Converter Não tem nãosytleClass String Não tem nãobinding String Não tem não

Page 18: Framework web 3 - JSF + Spring boot

Todos componentes + exemplos

● Links com documentação para API Padrão JSF● http://docs.oracle.com/javaee/7/tutorial/doc/jsf-intro.htm#BNAPH● https://javaserverfaces.java.net/nonav/docs/2.2/javadocs/index.html● http://www.jsftoolbox.com/documentation/help/12-

TagReference/core/index.jsf

Page 19: Framework web 3 - JSF + Spring boot

Renderers● Responsável por exibir o componente no

cliente● Efetua enconde de HTML e decode em

String do form enviado

Page 20: Framework web 3 - JSF + Spring boot

Configurar JSF + Spring-boot

● Criar arquivo faces-config.xml● Criar web.xml● Criar bean no Main para configurar

FacesServlet● Adicionar dependências do JSF

Page 21: Framework web 3 - JSF + Spring boot

Configurar JSF + Spring-boot

● Configurar faces-config.xml

<application> <el-resolver>

org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>

</application>

Page 22: Framework web 3 - JSF + Spring boot

Configurar JSF + Spring-boot

● Criar web.xml<?xml version="1.0" encoding="UTF-8"?><web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee

http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"><context-param>

<param-name>javax.faces.PROJECT_STAGE</param-name><param-value>Development</param-value>

</context-param><servlet>

<servlet-name>Faces Servlet</servlet-name><servlet-class>javax.faces.webapp.FacesServlet</servlet-class><load-on-startup>1</load-on-startup>

</servlet><servlet-mapping>

<servlet-name>Faces Servlet</servlet-name><url-pattern>*.jsf</url-pattern>

</servlet-mapping></web-app>

Page 23: Framework web 3 - JSF + Spring boot

Configurar JSF + Spring-boot

● Configurar bean do Spring na classe Main

Page 24: Framework web 3 - JSF + Spring boot

Configurar JSF + Spring-boot

● Adicionar dependências

https://github.com/forchesatto/estudo-spring/blob/master/spring-boot-jsf/pom.xml

Page 25: Framework web 3 - JSF + Spring boot

Prática● Fazer o uso de alguns componentes

estudados

Page 26: Framework web 3 - JSF + Spring boot

Managed Beans● POJO (Plain Old Java Objects)

Page 27: Framework web 3 - JSF + Spring boot

Managed Beans● Classe POJO com uma anotação

@ManagedBean● Não esquecer dos get e set para os

atributos;

Page 28: Framework web 3 - JSF + Spring boot

JSF Value Binding● Vincular valores do componente ao

Managed-bean;● A vinculação é feita através de EL

(Expression Language)● Sintaxe: #{ }● Pode executar métodos ou acessar

atributos;● Pode ser criado comandos condicionais;

Page 29: Framework web 3 - JSF + Spring boot

JSF Value Binding

Page 30: Framework web 3 - JSF + Spring boot

Prática● Integração página xhtml com ManagedBean

Page 31: Framework web 3 - JSF + Spring boot

Managed Beans - Escopo● Request: @RequestScoped;

○ Novos dados a cada requisição;● Session: @SessionScoped;

○ Criada uma sessão para o usuário dados finalizados só quando a sessão for encerrada;

● Application: @ApplicationScoped;○ Dados compartilhados por todos os usuários;

● View: @ViewScoped;○ Dados presentes enquanto estiver na mesma

página● Flow: @FlowScoped

○ Dados podem ser passado de página por página como um wizard

Page 32: Framework web 3 - JSF + Spring boot

Managed Beans - Init, Destroy● Interagindo na construção e destruição dos

ManagedBeans● @PostConstruct

○ É executado logo após a construção do MB○ Sempre deve ser adicionado logo acima de

um método● @PreDestroy

○ É executado pouco antes do MB sair do contêiner

○ Sempre deve ser adicionado logo acima de um método

Page 33: Framework web 3 - JSF + Spring boot

Face Messages● Classe do JSF responsável por enviar

mensagens ao componente <h:message> da página JSF.

1 - Contexto web;2 - Objeto de mensagem onde podemos indicar a Severidade da mensagem, o resumo e os detalhes;3 - Adiciona a mensagem no contexto, para um id especifico ou para null.

Page 34: Framework web 3 - JSF + Spring boot

JSF + Spring

● Trocar a anotação @ManagedBean por @Controller

● Trocar a anotação de escopo por da spring @Scope

Page 35: Framework web 3 - JSF + Spring boot

Prática

● Entendendo o comportamento dos escopos e mensagens