Você pode utilizar os elementos HTML e Core disponibilizados pelos JSF para criar uma interface gráfica poderosa e completa sem precisar escrever códigos Java. O JSF suporta todos os componentes de IU entretanto pode ser turbinado utilizando frameworks adicionais como o PrimeFaces, RichFaces e BootsFaces, para que você utilize a ultima palavra em componentes ricos para suas interfaces de usuário Java EE.
JSF Elementos HTML – h
- <h:outputText> Processa um texto HTML.
- <h:inputText> Processa uma entrada HTML do tipo = “text“, caixa de texto.
- <h:commandButton> Processa um input type = HTML do botão “enviar”.
- <h:selectOneMenu> Processa uma caixa de combinação HTML (ComboBox).
- <h:selectOneRadio> Processa um único botão de opção HTML.
- <h:selectBooleanCheckbox> Processa uma caixa única de seleção HTML.
- <h:inputTextarea> Processa um campo de área para texto HTML.
- <h:panelGrid> Processa uma tabela HTML em forma de grade.
- <h:message> Processa mensagem para um componente de interface JSF.
JSF – Elementos – Core – f
- <f:loadBundle> Carrega um pacote de recursos para a localidade da visão atual e armazena-o como um Mapa no escopo de solicitação
- <f:validateRegex> Valida componente JSF com uma expressão regular.
- <f:validateDoubleRange> Valida gama de valor flutuante.
- <f:selectItem> Adiciona item selecionável em um campo de seleção.
- <f:convertDateTime> Converte uma string em uma data de formato desejado.
- <f:convertNumber> Converte uma string em um número de formato desejado.
Criando um Formulário JSF
1 – Crie uma aplicação web dinâmica JSF e utilize o código abaixo para rodar sua aplicação no servidor de aplicação de sua preferencia:
2- Preencha os dados no formulário e os envie para ver o resultado.
Exemplo:
Neste exemplo criamos um formulário e exibimos seu resultado através do elementos do framework JSF.
Managed JavaBean – Participante
package org.desenvolvimento.aberto; import java.util.Date; import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; // Define decoradores @ManagedBean(name = "Participante") @RequestScoped public class Participante { // Define atributos privados private long id; private String nome; private String sobrenome; private String cargo; private Date data; private double salario; private String genero; private boolean ativo; private String observacao; // Metodos Getter e Setter public long getId() { return id; } public void setId(long id) { this.id = id; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getSobrenome() { return sobrenome; } public void setSobrenome(String sobrenome) { this.sobrenome = sobrenome; } public String getCargo() { return cargo; } public void setCargo(String cargo) { this.cargo = cargo; } public Date getData() { return data; } public void setData(Date data) { this.data = data; } public double getSalario() { return salario; } public void setSalario(double salario) { this.salario = salario; } public String getGenero() { return genero; } public void setGenero(String genero) { this.genero = genero; } public boolean isAtivo() { return ativo; } public void setAtivo(boolean ativo) { this.ativo = ativo; } public String getObservacao() { return observacao; } public void setObservacao(String observacao) { this.observacao = observacao; } }
Index.xhtml
<!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"> <f:loadBundle basename="resources.application" var="msg" /> <head> <title><h:outputText value="#{msg.welcomeTitle}" /></title> </head> <h:body> <h2>JSF - Desenvolvimento Aberto - Managed Beans -</h2> <h3> <h:outputText id="lnome" value="Java Server Faces- Elementos de Formulário - Cadastros:" /> </h3> <h:form> <fieldset style="padding: 10px"> <legend style="padding: 5px">Cadastro:</legend> <h:panelGrid columns="3" cellpadding="2px"> <h:outputText id="lnome" value="Nome:" /> <h:inputText id="tnome" value="#{Participante.nome}" size="30" required="true" label="Nome" requiredMessage="#{msg['requerido.nome']}"> <f:validateRegex pattern="[a-zA-Z]+" /> </h:inputText> <h:message for="tnome" style="color:red" /> <h:outputText id="lsobrenome" value="Sobrenome:" /> <h:inputText id="tsobrenome" value="#{Participante.sobrenome}" size="40" required="true" label="Sobrenome" requiredMessage="#{msg['requerido.sobrenome']}"> <f:validateRegex pattern="[a-zA-Z]+" /> </h:inputText> <h:message for="tsobrenome" style="color:red" /> <h:outputText id="lcargo" value="Cargo" /> <h:selectOneMenu id="tcargo" style="width:210px" value="#{Participante.cargo}" required="true" requiredMessage="#{msg['requerido.cargo']}"> <f:selectItem itemValue="Vocalista" itemLabel="Vocalista" /> <f:selectItem itemValue="Guitarrista" itemLabel="Guitarrista" /> <f:selectItem itemValue="Baixista" itemLabel="Baixista" /> <f:selectItem itemValue="Baterista" itemLabel="Baterista" /> <f:selectItem itemValue="" itemLabel="" /> <f:validateRegex pattern="[a-zA-Z]+" /> </h:selectOneMenu> <h:message for="tcargo" style="color:red" /> <h:outputText id="ldata" value="Data de Admissão" /> <h:inputText value="#{Participante.data}" required="true" requiredMessage="#{msg['requerido.data']}"> <f:convertDateTime pattern="dd/mm/yyyy" /> </h:inputText> <h:message for="tdata" style="color:red" /> <h:outputText id="lsalario" value="Salário" /> <h:inputText id="tsalario" value="#{Participante.salario}" required="true" label="Salário" requiredMessage="#{msg['requerido.salario']}" validatorMessage="#{msg['validar.salario']}"> <f:convertNumber currencySymbol="$" type="currency" /> <f:validateDoubleRange minimum="788.00" maximum="9999.99" /> </h:inputText> <h:message for="tsalario" style="color:red" /> <h:outputText id="lgenero" value="Sexo" /> <h:selectOneRadio id="tgenero" value="#{Participante.genero}" required="true" requiredMessage="#{msg['requerido.genero']}"> <f:selectItem itemValue="Masculino" itemLabel="Masculino" /> <f:selectItem itemValue="Feminino" itemLabel="Feminino" /> </h:selectOneRadio> <h:message for="tgenero" style="color:red" /> <h:outputText id="lativo" value="Ativo" /> <h:selectBooleanCheckbox value="#{Participante.ativo}"></h:selectBooleanCheckbox> <br /> <h:outputText id="lobservacao" value="Observação" /> <h:inputTextarea value="#{Participante.observacao}" rows="5" cols="30" /> </h:panelGrid> </fieldset> <br /> <h:commandButton id="submit" action="resultado.xhtml" value="Enviar Dados" /> </h:form> </h:body> </html>
Resultado.xhtml
<!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"> <f:loadBundle basename="resources.application" var="msg" /> <head> <title><h:outputText value="#{msg.welcomeTitle}" /></title> </head> <h:body> <h2>JSF - Desenvolvimento Aberto - Managed Beans -</h2> <h3> <h:outputText id="lnome" value="Java Server Faces- Elementos de Formulário - Resultado" /> </h3> <h:panelGrid columns="2"> <h:outputLabel value="Nome:" /> <h:outputText value="#{Participante.nome}" /> <h:outputLabel value="Sobrenome:" /> <h:outputText value="#{Participante.sobrenome}" /> <h:outputLabel value="Cargo:" /> <h:outputText value="#{Participante.cargo}" /> <h:outputLabel value="Data de Admissão:" /> <h:outputText value="#{Participante.data}"> <f:convertDateTime pattern="dd/mm/yyyy" /> </h:outputText> <h:outputLabel value="Salário" /> <h:outputText value="#{Participante.salario}"> <f:convertNumber currencySymbol="$" type="currency" /> </h:outputText> <h:outputLabel value="Sexo:" /> <h:outputText value="#{Participante.genero}" /> <h:outputLabel value="Ativo:" /> <h:outputText value="#{Participante.ativo}" /> <h:outputLabel value="Observacao" /> <h:outputText value="#{Participante.observacao}" /> </h:panelGrid> </h:body> </html>
Application.properties
# -- welcome -- welcomeTitle=Desenvolvimento Aberto requerido.nome=O campo nome é obrigátorio. requerido.sobrenome=O campo sobrenome é obrigátorio. requerido.cargo=O campo cargo é obrigátorio. requerido.data=O campo data de admissão é obrigátorio. requerido.genero=O campo genero é obrigátorio. requerido.salario =O campo salário é obrigatório. validar.salario =O salário não pode ser menor que o valor minimo atual.