Criando Projeto Web com JSF sem IDE Eclipse Introdução
O objetivo deste documento é ensiná-lo a criar um projeto usando JavaServer Faces sem o uso do IDE Eclipse, objetivando compreender completamente o funcionamento da tecnologia, como compilação das classes, dependências entre bibliotecas de classes utilizadas, etc. O primeiro passo é criar a estrutura de diretórios abaixo em qualquer lugar do HD. Diretórios em negrito. O projeto a ser criado fará o seguinte: uma página inicial obtém do usuário dois números inteiros que constituem um intervalo (inicial e final). Ao clicar no botão Enviar, o aplicativo calculará o somatórios de todos os inteiros contidos no intervalo informado. Se o intervalo informado estiver inválido, uma mensagem de validação será mostrada. Se algum campo for deixado em branco, uma mensagem de validação também será mostrada. JSFsemEclipse META-INF MANIFEST.MF WEB-INF classes beans beanIntervalo.java beanIntervalo.class controles Controle.java Controle.class compila.bat util Messages_pt.properties lib common-annotations.jar commons-beanutils.jar commons-collections.jar commons-digester.jar commons-logging.jar jsf-api.jar jsf-impl.jar jsf-tlds.jar jstl.jar standard.jar faces-config.xml web.xml index.jsp leintervalo.jsp somatorio.jsp
Listagem dos Fontes do Projeto beanIntervalo.java package beans; public class beanIntervalo { private int numini; private int numfim; private int soma; public void setNumini(int numini) { this.numini = numini; } public int getNumini() { return numini; }
Página 1 de 5 E-mail professor:
[email protected] –Arquivo: ADS-DW Criando projeto JSF sem Eclipse.doc
public void setNumfim(int numfim) { this.numfim = numfim; } public int getNumfim() { return numfim; } public void setSoma(int soma) { this.soma = soma; } public int getSoma() { return soma; } public void calculasoma() { for (int i = this.numini; i <= this.numfim; i++) this.soma += i; } }
Controle.java package controles; import beans.beanIntervalo; import javax.faces.context.FacesContext; import javax.faces.application.FacesMessage; public class Controle { private beanIntervalo beanintervalo; public beanIntervalo getBeanintervalo() { return beanintervalo; } public void setBeanintervalo(beanIntervalo beanintervalo) { this.beanintervalo = beanintervalo; } public Controle(){ beanintervalo = new beanIntervalo(); } public String validaintervalo() { boolean sucesso = true; FacesContext context = FacesContext.getCurrentInstance(); if ((beanintervalo.getNumini() > 0) && (beanintervalo.getNumfim() > 0)) { if (beanintervalo.getNumini() <= beanintervalo.getNumfim()) { beanintervalo.calculasoma(); sucesso = true; } else { String msg = "Intervalo incorreto."; FacesMessage message = new FacesMessage(msg); context.addMessage("formulario", message); sucesso = false; } } return (sucesso ? "sucesso" : "falha"); } }
Página 2 de 5 E-mail professor:
[email protected] –Arquivo: ADS-DW Criando projeto JSF sem Eclipse.doc
compila.bat @echo off javac -classpath "..\..\WebContent\WEB-INF\lib\jsf-api.jar";"..\..\WebContent\WEB-INF\classes" %1
Messages_pt.properties Este arquivo pode ser obtido a partir de jsf-impl.jar que fica no diretório lib. Abra este arquivo jar e procure no diretório javax.faces o arquivo Messages.properties. Extraia este arquivo do jar e renomeie-o para Messages_pt.properties e faça as seguintes alterações no mesmo: A linha 38 deste arquivo possui a linha seguinte: javax.faces.component.UIInput.REQUIRED={0}: Validation Error: Value is required. Altere a linha para que a mensagem de erro seja ajustada para o português, assim: javax.faces.component.UIInput.REQUIRED={0}: obrigatório.
Erro
de
validação:
este
campo
é
Para que este novo arquivo de mensagens ajustadas para o português seja incorporado à aplicação substituindo o arquivo Messages.properties de jsf-impl.jar, veja que a tag application foi inserida no arquivo faces-config.xml listado a seguir.
faces-config.xml
controle controles.Controle session /leintervalo.jsp sucesso /somatorio.jsp falha /leintervalo.jsp util.Messages
Página 3 de 5 E-mail professor:
[email protected] –Arquivo: ADS-DW Criando projeto JSF sem Eclipse.doc
web.xml
Este arquivo não necessita nenhuma alteração para que a aplicação funcione, isto é, nenhuma alteração específica para algum projeto precisa ser feita.
javax.faces.STATE_SAVING_METHOD server com.sun.faces.config.ConfigureListener Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet *.jsf BASIC
index.jsp
leintervalo.jsp <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
Leitura do intervalo Número inicial:
Página 4 de 5 E-mail professor: [email protected] –Arquivo: ADS-DW Criando projeto JSF sem Eclipse.doc
Número final:
somatorio.jsp <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
Somatório dos números do intervalo Somatório =
Criando o Arquivo WAR do Projeto No prompt-de-comando do Windows, entre no diretório JSFsemEclipse e execute o comando: jar cfv JSFsemEclipse.war *
Fazendo o Deploy da Aplicação no Servidor Ative o Tomcat 6.0, abra o navegador e execute o comando na barra de endereços do browser: http://localhost:8080/manager/deploy?path=/JSFsemEclipse&war=file:/E:\Tomcat6/JSFsemEc lipse/JSFsemEclipse.war Para remover a aplicação do servidor, execute o comando seguinte: http://localhost:8080/manager/undeploy?path=/JSFsemEclipse
Página 5 de 5 E-mail professor:
[email protected] –Arquivo: ADS-DW Criando projeto JSF sem Eclipse.doc