Criando o projeto
No Eclipse crie um novo 'JSF Project' como no link acima e coloque o nome de ProjetoJsf. Segue a estrutura do projeto:
Nesse post não iremos implementar os pacotes model e dao, estes serão reutilizados das postagens anteriores: Parte I e Parte II, de acordo com esses links implemente as classes: Categoria.java, Conexao.java e Categoria_DAO.java, quanto a essa última classe, ela está implementada em partes nas duas postagens, então garanta que ela tenha os seguintes métodos: inserir, listar, selecionar, alterar e remover.
Depois de feito isso, vamos criar nosso pacote control onde guardamos nossos beans. Nesse caso teremos apenas um bean chamado CategoriaBean.java, a implentação desse bean é o seguinte:
public class CategoriaBean { //Atributos private Categoria categoria = new Categoria(); private List<Categoria> categorias; //Métodos public String nova(){ categoria = new Categoria(); return "inserir"; } public String inserir(){ Categoria_DAO dao = new Categoria_DAO(); return dao.inserir(categoria); } public void selecionar(int codigo){ Categoria_DAO dao = new Categoria_DAO(); categoria = dao.selecionar(codigo); } public String alterar(){ Categoria_DAO dao = new Categoria_DAO(); return dao.alterar(categoria); } public String remover(){ Categoria_DAO dao = new Categoria_DAO(); return dao.remover(categoria.getCodigo()); } //Getters e Setters public Categoria getCategoria() { return categoria; } public void setCategoria(Categoria categoria) { this.categoria = categoria; } public List<Categoria> getCategorias() { Categoria_DAO dao = new Categoria_DAO(); categorias = dao.listar(); return categorias; } public void setCategorias(List<Categoria> categorias) { this.categorias = categorias; } }
Alguns métodos são claros, criam uma Categoria_DAO e chamam suas operações correspondentes. Perceba que não há passagem do objeto Categoria por parâmetro nos métodos do bean, pois através dos getter's e setter's eles são teoricamente "injetados" dentro do bean ao dar um submit em um form de uma página JSF (talvez isso não tenha ficado muito claro, mas vou tentar esclarecer no decorrer da implementação).
Depois de implementar o bean, vamos mapeá-los no faces-config.xml com escopo de sessão:
<managed-bean> <managed-bean-name>categoriaBean</managed-bean-name> <managed-bean-class>control.CategoriaBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>
Dentro do WebContent crie as seguintes JSP's com o template de JSFBasePage:
* inserirCategoria.jsp
* categorias.jsp
* alterarCategoria.jsp
* removerCategoria.jsp
* falha.jsp
Por enquanto podem ser vazios mesmo, no faces-config.xml, faça o seguinte diagraḿa, onde alguns redirecionamentos dependem do que o bean retornar (explicado em sala de aula):
inserirCategoria.jsp
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <html> <head> <title>Inserir Categoria</title> </head> <body> <f:view> <h:form> <h:panelGrid columns="3"> <h:outputText value="Nome" /> <h:inputText value="#{categoriaBean.categoria.nome}" required="true" requiredMessage="Informe o nome" id="nome" /> <h:message for="nome" style="color: red;" /> <h:commandButton value="Salvar" action="#{categoriaBean.inserir}" /> <h:commandButton value="Cancelar" action="cancelar" immediate="true" /> </h:panelGrid> </h:form> </f:view> </body> </html>
categorias.jsp
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <html> <head> <title>Categorias</title> </head> <body> <f:view> <h:form> <h:commandButton value="Nova" action="#{categoriaBean.nova}" /> </h:form> <h:dataTable value="#{categoriaBean.categorias}" var="c" > <h:column> <f:facet name="header"><h:outputText value="Codigo" /></f:facet> <h:outputText value="#{c.codigo}" /> </h:column> <h:column> <f:facet name="header"><h:outputText value="Nome" /></f:facet> <h:outputText value="#{c.nome}" /> </h:column> <h:column> <f:facet name="header"><h:outputText value="Ações" /></f:facet> <h:form> <h:commandButton value="Alterar" actionListener="#{categoriaBean.selecionar(c.codigo)}" action="alterar" /> <h:commandButton value="Remover" actionListener="#{categoriaBean.selecionar(c.codigo)}" action="remover" /> </h:form> </h:column> </h:dataTable> </f:view> </body> </html>
alterarCategoria.jsp
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <html> <head> <title>Alterar Categoria</title> </head> <body> <f:view> <h:form> <h:panelGrid columns="3"> <h:outputText value="Nome" /> <h:inputText value="#{categoriaBean.categoria.nome}" required="true" requiredMessage="Informe o nome" id="nome" /> <h:message for="nome" style="color: red;" /> <h:commandButton value="Salvar" action="#{categoriaBean.alterar}" /> <h:commandButton value="Cancelar" action="cancelar" immediate="true" /> </h:panelGrid> </h:form> </f:view> </body> </html>
removerCategoria.jsp
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <html> <head> <title>Remover Categoria</title> </head> <body> <f:view> <h:outputText value="Confirma a remoção da categoria: #{categoriaBean.categoria.nome} ?" /> <h:form> <h:commandButton value="Sim" action="#{categoriaBean.remover}" /> <h:commandButton value="Não" action="cancelar" immediate="true" /> </h:form> </f:view> </body> </html>
falha.jsp
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <html> <head> <title></title> </head> <body> <f:view> <h:outputText value="Ocorreu um erro..." /> </f:view> </body> </html>
Até a próxima! =)
Baixar projeto
Muito bom, poderia colocar os arquivos para download?
ResponderExcluir