Escolar Documentos
Profissional Documentos
Cultura Documentos
Tutorial CRUD
Tutorial CRUD
2) Crie um novo Dynamic Web Project chamado Projeto_Crud configurado com o Hibernate,
JSF e MySQL.
</persistence-unit>
</persistence>
4) Dentro da pasta src do Projeto_Crud vamos criar 4 pacotes: modelo, fachada, converters e
beansgerenciados. Para criar um novo pacote dentro da pasta src, basta clicar com o boto
direito do mouse sobre a pasta src e ir em New > Other.. > Package.
6) Agora, vamos criar as classes em Java que representam esse diagrama. Para isso, devemos
criar 4 classes dentro do pacote modelo: Pessoa, Aluno, Curso e Disciplina. Todas devem
conter os atributos especificados no diagrama e as anotaes para realizar a persistncia em
banco de dados. Segue abaixo o cdigo fonte das 4 classes:
Pessoa.java
package modelo;
import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "pessoa")
public class Pessoa implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "CPF", nullable=false)
private String cpf;
@Basic(optional = false)
@Column(name = "NOME", nullable=false)
private String nome;
@Basic(optional = false)
@Column(name = "DATANASCIMENTO", nullable=false)
private Date dataNascimento;
@Basic(optional = false)
@Column(name = "TELEFONE", nullable=true)
private String telefone;
public Pessoa() {
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Date getDataNascimento() {
return dataNascimento;
}
public void setDataNascimento(Date dataNascimento) {
this.dataNascimento = dataNascimento;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Pessoa)) {
return false;
}
Pessoa other = (Pessoa) object;
if (!(this.getCpf().equals(other.getCpf()))) {
return false;
}
return true;
}
}
Aluno.java
package modelo;
import java.io.Serializable;
import javax.persistence.*;
@Entity
@Table(name = "aluno")
public class Aluno extends Pessoa implements Serializable {
private static final long serialVersionUID = 1L;
@Basic(optional = false)
@Column(name = "RA", nullable=false)
private int ra;
@Basic(optional = false)
@Column(name = "EMAIL", nullable=false)
private String email;
@Basic(optional = false)
@Column(name = "ESCOLARIDADE", nullable=true)
private String escolaridade;
@JoinColumn(name = "CURSO_ID", referencedColumnName = "ID", nullable=false)
@ManyToOne
private Curso curso;
public Aluno() {
}
public int getRa() {
return ra;
}
public void setRa(int ra) {
this.ra = ra;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getEscolaridade() {
return escolaridade;
}
public void setEscolaridade(String escolaridade) {
this.escolaridade = escolaridade;
}
public Curso getCurso() {
return curso;
}
public void setCurso(Curso curso) {
this.curso = curso;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Aluno)) {
return false;
}
Aluno other = (Aluno) object;
if (!(this.getCpf().equals(other.getCpf()))) {
return false;
}
return true;
}
}
Curso.java
package modelo;
import java.io.Serializable;
import javax.persistence.*;
@Entity
@Table(name = "curso")
public class Curso implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable=false)
private int id;
@Basic(optional = false)
@Column(name = "NOME", nullable=false)
private String nome;
@Basic(optional = false)
@Column(name = "NOMEDEPARTAMENTO", nullable=false)
private String nomeDepartamento;
@Basic(optional = false)
@Column(name = "CARGAHORARIA", nullable=true)
private int cargaHoraria;
public Curso() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getNomeDepartamento() {
return nomeDepartamento;
}
public void setNomeDepartamento(String nomeDepartamento) {
this.nomeDepartamento = nomeDepartamento;
}
public int getCargaHoraria() {
return cargaHoraria;
}
public void setCargaHoraria(int cargaHoraria) {
this.cargaHoraria = cargaHoraria;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Curso)) {
return false;
}
Curso other = (Curso) object;
if (!(this.getId() == other.getId())) {
return false;
}
return true;
}
}
Disciplina.java
package modelo;
import java.io.Serializable;
import javax.persistence.*;
import modelo.Curso;
@Entity
@Table(name = "disciplina")
public class Disciplina implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable=false)
private int id;
@Basic(optional = false)
@Column(name = "NOME", nullable=false)
private String nome;
@Basic(optional = false)
@Column(name = "QUANTIDADECREDITOS", nullable=true)
private int quantidadeCreditos;
@Basic(optional = false)
@Column(name = "NOMEPROFESSOR", nullable=true)
private String nomeProfessor;
@JoinColumn(name = "CURSO_ID", referencedColumnName = "ID", nullable=false)
@ManyToOne
private Curso curso;
public Disciplina() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getQuantidadeCreditos() {
return quantidadeCreditos;
}
public void setQuantidadeCreditos(int quantidadeCreditos) {
this.quantidadeCreditos = quantidadeCreditos;
}
public String getNomeProfessor() {
return nomeProfessor;
}
public void setNomeProfessor(String nomeProfessor) {
this.nomeProfessor = nomeProfessor;
}
public Curso getCurso() {
return curso;
}
public void setCurso(Curso curso) {
this.curso = curso;
}
@Override
7)
Agora, vamos criar as classes no padro Fachada para acesso das classes Pessoa, Aluno,
Disciplina e Curso ao banco de Dados. Iremos criar 5 novas classes dentro do pacote fachada,
sendo: AbstractFacade, PessoaFacade, AlunoFacade, CursoFacade e DisciplinaFacade. Segue
abaixo o cdigo de cada uma dessas classes:
AbstractFacade.java
package fachada;
import
import
import
import
java.util.List;
javax.persistence.EntityManager;
javax.persistence.EntityManagerFactory;
javax.persistence.Persistence;
getEntityManager().getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
}
}
public T find(Object id) {
return getEntityManager().find(entityClass, id);
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public List<T> findAll() {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
return getEntityManager().createQuery(cq).getResultList();
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public List<T> findRange(int[] range) {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
javax.persistence.Query q = getEntityManager().createQuery(cq);
q.setMaxResults(range[1] - range[0]);
q.setFirstResult(range[0]);
return q.getResultList();
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public int count() {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
javax.persistence.criteria.Root<T> rt = cq.from(entityClass);
cq.select(getEntityManager().getCriteriaBuilder().count(rt));
javax.persistence.Query q = getEntityManager().createQuery(cq);
return ((Long) q.getSingleResult()).intValue();
}
}
PessoaFacade.java
package fachada;
import javax.persistence.EntityManager;
import modelo.Pessoa;
public class PessoaFacade extends AbstractFacade<Pessoa> {
private EntityManager em = AbstractFacade.emf.createEntityManager();
protected EntityManager getEntityManager() {
return em;
}
public PessoaFacade() {
super(Pessoa.class);
}
}
AlunoFacade.java
package fachada;
import javax.persistence.EntityManager;
import modelo.Aluno;
CursoFacade.java
package fachada;
import javax.persistence.EntityManager;
import modelo.Curso;
public class CursoFacade extends AbstractFacade<Curso> {
private EntityManager em = AbstractFacade.emf.createEntityManager();
protected EntityManager getEntityManager() {
return em;
}
public CursoFacade() {
super(Curso.class);
}
}
DisciplinaFacade.java
package fachada;
import javax.persistence.EntityManager;
import modelo.Disciplina;
public class DisciplinaFacade extends AbstractFacade<Disciplina> {
private EntityManager em = AbstractFacade.emf.createEntityManager();
protected EntityManager getEntityManager() {
return em;
}
public DisciplinaFacade() {
super(Disciplina.class);
}
}
8)
Agora, vamos criar os Beans Gerenciados que vo receber as requisies das pginas Web da
aplicao. Vamos criar 4 beans gerenciados dentro do pacote beansgerenciados:
PessoaManagedBean, AlunoManagedBean, CursoManagedBean e DisciplinaManagedBean. Os
cdigos desses beans gerenciados seguem abaixo:
PessoaManagedBean.java
package beansgerenciados;
import
import
import
import
import
java.util.ArrayList;
java.util.List;
javax.faces.model.SelectItem;
javax.faces.event.ActionEvent;
javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import fachada.PessoaFacade;
import modelo.Pessoa;
@ManagedBean(name="PessoaManagedBean")
@RequestScoped
public class PessoaManagedBean {
private Pessoa pessoa = new Pessoa();
private PessoaFacade pessoaFacade = new PessoaFacade();
public PessoaManagedBean() {
}
public Pessoa getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
public String newPessoa() {
this.pessoaFacade.create(this.pessoa);
return "newSuccess";
}
public String editPessoa() {
this.pessoaFacade.edit(this.pessoa);
return "editSuccess";
}
public void removePessoa(ActionEvent e) {
String id = (String) e.getComponent().getAttributes().get("codPessoa");
this.pessoaFacade.remove(this.pessoaFacade.find(id));
}
public void findPessoa(ActionEvent e) {
String id = (String) e.getComponent().getAttributes().get("codPessoa");
this.pessoa = this.pessoaFacade.find(id);
}
public List<Pessoa> getListaPessoas() {
return this.pessoaFacade.findAll();
}
public List<SelectItem> getPessoas() {
List<SelectItem> list = new ArrayList<SelectItem>();
List<Pessoa> it = getListaPessoas();
for (int i = 0; i < it.size(); i++) {
Pessoa pessoa = it.get(i);
list.add(new SelectItem(pessoa, pessoa.getCpf()+""));
}
return list;
}
}
AlunoManagedBean.java
package beansgerenciados;
import
import
import
import
java.util.ArrayList;
java.util.List;
javax.faces.model.SelectItem;
javax.faces.event.ActionEvent;
import
import
import
import
javax.faces.bean.ManagedBean;
javax.faces.bean.RequestScoped;
fachada.AlunoFacade;
modelo.Aluno;
@ManagedBean(name="AlunoManagedBean")
@RequestScoped
public class AlunoManagedBean {
private Aluno aluno = new Aluno();
private AlunoFacade alunoFacade = new AlunoFacade();
public AlunoManagedBean() {
}
public Aluno getAluno() {
return aluno;
}
public void setAluno(Aluno aluno) {
this.aluno = aluno;
}
public String newAluno() {
this.alunoFacade.create(this.aluno);
return "newSuccess";
}
public String editAluno() {
this.alunoFacade.edit(this.aluno);
return "editSuccess";
}
public void removeAluno(ActionEvent e) {
String id = (String) e.getComponent().getAttributes().get("codAluno");
this.alunoFacade.remove(this.alunoFacade.find(id));
}
public void findAluno(ActionEvent e) {
String id = (String) e.getComponent().getAttributes().get("codAluno");
this.aluno = this.alunoFacade.find(id);
}
public List<Aluno> getListaAlunos() {
return this.alunoFacade.findAll();
}
public List<SelectItem> getAlunos() {
List<SelectItem> list = new ArrayList<SelectItem>();
List<Aluno> it = getListaAlunos();
for (int i = 0; i < it.size(); i++) {
Aluno aluno = it.get(i);
list.add(new SelectItem(aluno, aluno.getCpf()+""));
}
return list;
}
}
CursoManagedBean.java
package beansgerenciados;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;
import
import
import
import
import
javax.faces.event.ActionEvent;
javax.faces.bean.ManagedBean;
javax.faces.bean.RequestScoped;
fachada.CursoFacade;
modelo.Curso;
@ManagedBean(name="CursoManagedBean")
@RequestScoped
public class CursoManagedBean {
private Curso curso = new Curso();
private CursoFacade cursoFacade = new CursoFacade();
public CursoManagedBean() {
}
public Curso getCurso() {
return curso;
}
public void setCurso(Curso curso) {
this.curso = curso;
}
public String newCurso() {
this.cursoFacade.create(this.curso);
return "newSuccess";
}
public String editCurso() {
this.cursoFacade.edit(this.curso);
return "editSuccess";
}
public void removeCurso(ActionEvent e) {
Integer id = (Integer) e.getComponent().getAttributes().get("codCurso");
this.cursoFacade.remove(this.cursoFacade.find(id));
}
public void findCurso(ActionEvent e) {
Integer id = (Integer) e.getComponent().getAttributes().get("codCurso");
this.curso = this.cursoFacade.find(id);
}
public List<Curso> getListaCursos() {
return this.cursoFacade.findAll();
}
public List<SelectItem> getCursos() {
List<SelectItem> list = new ArrayList<SelectItem>();
List<Curso> it = getListaCursos();
for (int i = 0; i < it.size(); i++) {
Curso curso = it.get(i);
list.add(new SelectItem(curso, curso.getId()+""));
}
return list;
}
}
DisciplinaManagedBean.java
package beansgerenciados;
import java.util.ArrayList;
import java.util.List;
import
import
import
import
import
import
javax.faces.model.SelectItem;
javax.faces.event.ActionEvent;
javax.faces.bean.ManagedBean;
javax.faces.bean.RequestScoped;
fachada.DisciplinaFacade;
modelo.Disciplina;
@ManagedBean(name="DisciplinaManagedBean")
@RequestScoped
public class DisciplinaManagedBean {
private Disciplina disciplina = new Disciplina();
private DisciplinaFacade disciplinaFacade = new DisciplinaFacade();
public DisciplinaManagedBean() {
}
public Disciplina getDisciplina() {
return disciplina;
}
public void setDisciplina(Disciplina disciplina) {
this.disciplina = disciplina;
}
public String newDisciplina() {
this.disciplinaFacade.create(this.disciplina);
return "newSuccess";
}
public String editDisciplina() {
this.disciplinaFacade.edit(this.disciplina);
return "editSuccess";
}
public void removeDisciplina(ActionEvent e) {
Integer id = (Integer) e.getComponent().getAttributes().get("codDisciplina");
this.disciplinaFacade.remove(this.disciplinaFacade.find(id));
}
public void findDisciplina(ActionEvent e) {
Integer id = (Integer) e.getComponent().getAttributes().get("codDisciplina");
this.disciplina = this.disciplinaFacade.find(id);
}
public List<Disciplina> getListaDisciplinas() {
return this.disciplinaFacade.findAll();
}
public List<SelectItem> getDisciplinas() {
List<SelectItem> list = new ArrayList<SelectItem>();
List<Disciplina> it = getListaDisciplinas();
for (int i = 0; i < it.size(); i++) {
Disciplina disciplina = it.get(i);
list.add(new SelectItem(disciplina, disciplina.getId()+""));
}
return list;
}
}
9) Agora, vamos criar uma classe Converter para a classe Curso. Isso necessrio, pois na
interface Web haver um combobox para selecionar um curso no cadastro de Aluno e no
javax.faces.component.UIComponent;
javax.faces.context.FacesContext;
javax.faces.convert.Converter;
javax.faces.convert.FacesConverter;
fachada.CursoFacade;
modelo.Curso;
@FacesConverter("CursoConverter")
public class CursoConverter implements Converter {
public Object getAsObject(FacesContext context, UIComponent component, String value) {
return new CursoFacade().find(new Integer(value));
}
public String getAsString(FacesContext context, UIComponent component, Object value) {
Curso curso = (Curso) value;
return curso.getId()+"";
}
}
10) Agora vamos criar as pginas Web utilizando o framework JSF. Para cada uma das classes do
pacote modelo (Pessoa, Aluno, Curso, Disciplina) devero ser criadas 3 pginas Web
(cadastrar, editar e listar) e uma pgina index (pgina inicial).
11) Dentro da pasta WebContent crie 4 novas pastas: Pessoa, Aluno, Curso e Disciplina. Para criar
uma nova pasta dentro da pasta WebContent, clique com o boto direito do mouse em cima da
pasta WebContent, v em New > Folder. Digite o nome da nova pasta e clique em OK.
12) Criada as 4 pastas, vamos criar as pginas Web referente a Pessoa, dentro da pasta Pessoa.
Para criar uma nova pgina Web v em New > Other.. E procure por JSP File.
newPessoa.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<f:view>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"/>
<title>New Pessoa</title>
</head>
<body>
<div class="line-separator"></div>
<div style="text-align:center">
<h1 class="title">New Pessoa</h1>
</div>
<div class="line-separator"></div>
<br>
<h:form>
<h:panelGrid columns="2" styleClass="table">
<h:outputText value="cpf"/>
<h:inputText required="true" label="cpf"
value="#{PessoaManagedBean.pessoa.cpf}"/>
<h:outputText value="nome"/>
<h:inputText required="true" label="nome"
value="#{PessoaManagedBean.pessoa.nome}"/>
<h:outputText value="dataNascimento"/>
<h:inputText required="true"
label="dataNascimento" value="#{PessoaManagedBean.pessoa.dataNascimento}">
<f:convertDateTime pattern="dd/MM/yyyy"/>
</h:inputText>
<h:outputText value="telefone"/>
<h:inputText label="telefone"
value="#{PessoaManagedBean.pessoa.telefone}"/>
</h:panelGrid>
<br>
<h:messages errorClass="error"></h:messages>
<div style="text-align:center">
<h:commandButton value="Save"
action="#{PessoaManagedBean.newPessoa}" styleClass="save"/>
<h:commandButton value="Cancel" immediate="true"
action="listPessoa" styleClass="cancel"/>
</div>
</h:form>
</body>
</html>
</f:view>
editPessoa.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<f:view>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"/>
<title>Edit Pessoa</title>
</head>
<body>
<div class="line-separator"></div>
<div style="text-align:center">
<h1 class="title">Edit Pessoa</h1>
</div>
<div class="line-separator"></div>
<br>
<h:form>
<table class="table">
<tr>
<td>cpf</td>
<td>
<h:inputHidden
value="#{PessoaManagedBean.pessoa.cpf}"/>
<h:inputText disabled="true"
value="#{PessoaManagedBean.pessoa.cpf}"/>
</td>
</tr>
<tr>
<td>nome</td>
<td>
<h:inputText required="true"
label="nome" value="#{PessoaManagedBean.pessoa.nome}"/>
</td>
</tr>
<tr>
<td>dataNascimento</td>
<td>
<h:inputText required="true"
label="dataNascimento" value="#{PessoaManagedBean.pessoa.dataNascimento}">
<f:convertDateTime
pattern="dd/MM/yyyy"/>
</h:inputText>
</td>
</tr>
<tr>
<td>telefone</td>
<td>
<h:inputText label="telefone"
value="#{PessoaManagedBean.pessoa.telefone}"/>
</td>
</tr>
</table>
<br>
<h:messages errorClass="error"></h:messages>
<div style="text-align:center">
<h:commandButton value="Save"
action="#{PessoaManagedBean.editPessoa}" styleClass="save"/>
<h:commandButton value="Cancel" immediate="true"
action="listPessoa" styleClass="cancel"/>
</div>
</h:form>
</body>
</html>
</f:view>
listPessoa.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<f:view>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"/>
<title>List of Pessoa</title>
</head>
<body>
<div class="line-separator"></div>
<div style="text-align:center">
<h1 class="title">List of Pessoa</h1>
</div>
<div class="line-separator"></div>
<br>
<h:form>
<h:dataTable value="#{PessoaManagedBean.listaPessoas}"
var="item" styleClass="list_table" headerClass="header" rowClasses="row1,row2">
<h:column>
<f:facet name="header" >
<h:outputText value="cpf"/>
</f:facet>
<h:outputText value="#{item.cpf}"/>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="nome"/>
</f:facet>
<h:outputText value="#{item.nome}"/>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="dataNascimento"/>
</f:facet>
<h:outputText
value="#{item.dataNascimento}">
<f:convertDateTime
pattern="dd/MM/yyyy"/>
</h:outputText>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="telefone"/>
</f:facet>
<h:outputText value="#{item.telefone}"/>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="Editar"/>
</f:facet>
<h:commandLink value="editar" type="submit"
action="editPessoa" actionListener="#{PessoaManagedBean.findPessoa}" >
<f:attribute name="codPessoa"
value="#{item.cpf}"/>
</h:commandLink>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="Remover"/>
</f:facet>
<h:commandLink value="remover" type="submit"
actionListener="#{PessoaManagedBean.removePessoa}" >
<f:attribute name="codPessoa"
value="#{item.cpf}"/>
</h:commandLink>
</h:column>
</h:dataTable>
<br>
<div style="text-align:center">
<h:commandButton value="Back to Index"
immediate="true" action="index" styleClass="button"/>
<h:commandButton value="New Pessoa"
immediate="true" action="newPessoa" styleClass="button"/>
</div>
</h:form>
</body>
</html>
</f:view>
</head>
<body>
<div class="line-separator"></div>
<div style="text-align:center">
<h1 class="title">New Aluno</h1>
</div>
<div class="line-separator"></div>
<br>
<h:form>
<h:panelGrid columns="2" styleClass="table">
<h:outputText value="cpf"/>
<h:inputText required="true" label="cpf"
value="#{AlunoManagedBean.aluno.cpf}"/>
<h:outputText value="nome"/>
<h:inputText required="true" label="nome"
value="#{AlunoManagedBean.aluno.nome}"/>
<h:outputText value="dataNascimento"/>
<h:inputText required="true"
label="dataNascimento" value="#{AlunoManagedBean.aluno.dataNascimento}">
<f:convertDateTime pattern="dd/MM/yyyy"/>
</h:inputText>
<h:outputText value="telefone"/>
<h:inputText label="telefone"
value="#{AlunoManagedBean.aluno.telefone}"/>
<h:outputText value="ra"/>
<h:inputText required="true" label="ra"
value="#{AlunoManagedBean.aluno.ra}"/>
<h:outputText value="email"/>
<h:inputText required="true" label="email"
value="#{AlunoManagedBean.aluno.email}"/>
<h:outputText value="escolaridade"/>
<h:inputText label="escolaridade"
value="#{AlunoManagedBean.aluno.escolaridade}"/>
<h:outputText value="curso"/>
<h:selectOneMenu required="true" label="curso"
value="#{AlunoManagedBean.aluno.curso}">
<f:selectItems value="#{CursoManagedBean.cursos}"
/>
<f:converter converterId="CursoConverter"/>
</h:selectOneMenu>
</h:panelGrid>
<br>
<h:messages errorClass="error"></h:messages>
<div style="text-align:center">
<h:commandButton value="Save"
action="#{AlunoManagedBean.newAluno}" styleClass="save"/>
<h:commandButton value="Cancel" immediate="true"
action="listAluno" styleClass="cancel"/>
</div>
</h:form>
</body>
</html>
</f:view>
editAluno.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<f:view>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"/>
<title>Edit Aluno</title>
</head>
<body>
<div class="line-separator"></div>
<div style="text-align:center">
<h1 class="title">Edit Aluno</h1>
</div>
<div class="line-separator"></div>
<br>
<h:form>
<table class="table">
<tr>
<td>cpf</td>
<td>
<h:inputHidden
value="#{AlunoManagedBean.aluno.cpf}"/>
<h:inputText disabled="true"
value="#{AlunoManagedBean.aluno.cpf}"/>
</td>
</tr>
<tr>
<td>nome</td>
<td>
<h:inputText required="true"
label="nome" value="#{AlunoManagedBean.aluno.nome}"/>
</td>
</tr>
<tr>
<td>dataNascimento</td>
<td>
<h:inputText required="true"
label="dataNascimento" value="#{AlunoManagedBean.aluno.dataNascimento}">
<f:convertDateTime
pattern="dd/MM/yyyy"/>
</h:inputText>
</td>
</tr>
<tr>
<td>telefone</td>
<td>
<h:inputText label="telefone"
value="#{AlunoManagedBean.aluno.telefone}"/>
</td>
</tr>
<tr>
<td>ra</td>
<td>
<h:inputText required="true"
label="ra" value="#{AlunoManagedBean.aluno.ra}"/>
</td>
</tr>
<tr>
<td>email</td>
<td>
<h:inputText required="true"
label="email" value="#{AlunoManagedBean.aluno.email}"/>
</td>
</tr>
<tr>
<td>escolaridade</td>
<td>
<h:inputText label="escolaridade"
value="#{AlunoManagedBean.aluno.escolaridade}"/>
</td>
</tr>
<tr>
<td>curso</td>
<td>
<h:selectOneMenu required="true"
label="curso" value="#{AlunoManagedBean.aluno.curso}">
<f:selectItems
value="#{CursoManagedBean.cursos}" />
<f:converter
converterId="CursoConverter"/>
</h:selectOneMenu>
</td>
</tr>
</table>
<br>
<h:messages errorClass="error"></h:messages>
<div style="text-align:center">
<h:commandButton value="Save"
action="#{AlunoManagedBean.editAluno}" styleClass="save"/>
<h:commandButton value="Cancel" immediate="true"
action="listAluno" styleClass="cancel"/>
</div>
</h:form>
</body>
</html>
</f:view>
listAluno.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<f:view>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"/>
<title>List of Aluno</title>
</head>
<body>
<div class="line-separator"></div>
<div style="text-align:center">
<h1 class="title">List of Aluno</h1>
</div>
<div class="line-separator"></div>
<br>
<h:form>
<h:dataTable value="#{AlunoManagedBean.listaAlunos}"
var="item" styleClass="list_table" headerClass="header" rowClasses="row1,row2">
<h:column>
<f:facet name="header" >
<h:outputText value="cpf"/>
</f:facet>
<h:outputText value="#{item.cpf}"/>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="nome"/>
</f:facet>
<h:outputText value="#{item.nome}"/>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="dataNascimento"/>
</f:facet>
<h:outputText
value="#{item.dataNascimento}">
<f:convertDateTime
pattern="dd/MM/yyyy"/>
</h:outputText>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="telefone"/>
</f:facet>
<h:outputText value="#{item.telefone}"/>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="ra"/>
</f:facet>
<h:outputText value="#{item.ra}"/>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="email"/>
</f:facet>
<h:outputText value="#{item.email}"/>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="escolaridade"/>
</f:facet>
<h:outputText value="#{item.escolaridade}"/>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="curso"/>
</f:facet>
<h:outputText value="#{item.curso}">
<f:converter
converterId="CursoConverter"/>
</h:outputText>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="Editar"/>
</f:facet>
<h:commandLink value="editar" type="submit"
action="editAluno" actionListener="#{AlunoManagedBean.findAluno}" >
<f:attribute name="codAluno"
value="#{item.cpf}"/>
</h:commandLink>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="Remover"/>
</f:facet>
<h:commandLink value="remover" type="submit"
actionListener="#{AlunoManagedBean.removeAluno}" >
<f:attribute name="codAluno"
value="#{item.cpf}"/>
</h:commandLink>
</h:column>
</h:dataTable>
<br>
<div style="text-align:center">
<h:commandButton value="Back to Index"
immediate="true" action="index" styleClass="button"/>
<h:commandButton value="New Aluno"
immediate="true" action="newAluno" styleClass="button"/>
</div>
</h:form>
</body>
</html>
</f:view>
action="listCurso" styleClass="cancel"/>
</div>
</h:form>
</body>
</html>
</f:view>
editCurso.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<f:view>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"/>
<title>Edit Curso</title>
</head>
<body>
<div class="line-separator"></div>
<div style="text-align:center">
<h1 class="title">Edit Curso</h1>
</div>
<div class="line-separator"></div>
<br>
<h:form>
<table class="table">
<h:inputHidden
value="#{CursoManagedBean.curso.id}"/>
<tr>
<td>nome</td>
<td>
<h:inputText required="true"
label="nome" value="#{CursoManagedBean.curso.nome}"/>
</td>
</tr>
<tr>
<td>nomeDepartamento</td>
<td>
<h:inputText required="true"
label="nomeDepartamento" value="#{CursoManagedBean.curso.nomeDepartamento}"/>
</td>
</tr>
<tr>
<td>cargaHoraria</td>
<td>
<h:inputText label="cargaHoraria"
value="#{CursoManagedBean.curso.cargaHoraria}"/>
</td>
</tr>
</table>
<br>
<h:messages errorClass="error"></h:messages>
<div style="text-align:center">
<h:commandButton value="Save"
action="#{CursoManagedBean.editCurso}" styleClass="save"/>
<h:commandButton value="Cancel" immediate="true"
action="listCurso" styleClass="cancel"/>
</div>
</h:form>
</body>
</html>
</f:view>
listCurso.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<f:view>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"/>
<title>List of Curso</title>
</head>
<body>
<div class="line-separator"></div>
<div style="text-align:center">
<h1 class="title">List of Curso</h1>
</div>
<div class="line-separator"></div>
<br>
<h:form>
<h:dataTable value="#{CursoManagedBean.listaCursos}"
var="item" styleClass="list_table" headerClass="header" rowClasses="row1,row2">
<h:column>
<f:facet name="header" >
<h:outputText value="id"/>
</f:facet>
<h:outputText value="#{item.id}"/>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="nome"/>
</f:facet>
<h:outputText value="#{item.nome}"/>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText
value="nomeDepartamento"/>
</f:facet>
<h:outputText
value="#{item.nomeDepartamento}"/>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="cargaHoraria"/>
</f:facet>
<h:outputText value="#{item.cargaHoraria}"/>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="Editar"/>
</f:facet>
<h:commandLink value="editar" type="submit"
action="editCurso" actionListener="#{CursoManagedBean.findCurso}" >
<f:attribute name="codCurso"
value="#{item.id}"/>
</h:commandLink>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="Remover"/>
</f:facet>
<h:commandLink value="remover" type="submit"
actionListener="#{CursoManagedBean.removeCurso}" >
<f:attribute name="codCurso"
value="#{item.id}"/>
</h:commandLink>
</h:column>
</h:dataTable>
<br>
<div style="text-align:center">
<h:commandButton value="Back to Index"
immediate="true" action="index" styleClass="button"/>
<h:commandButton value="New Curso"
immediate="true" action="newCurso" styleClass="button"/>
</div>
</h:form>
</body>
</html>
</f:view>
15) Vamos criar as pginas Web referente a Disciplina dentro da pasta Disciplina.
newDisciplina.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<f:view>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"/>
<title>New Disciplina</title>
</head>
<body>
<div class="line-separator"></div>
<div style="text-align:center">
<h1 class="title">New Disciplina</h1>
</div>
<div class="line-separator"></div>
<br>
<h:form>
<h:panelGrid columns="2" styleClass="table">
<h:outputText value="nome"/>
<h:inputText required="true" label="nome"
value="#{DisciplinaManagedBean.disciplina.nome}"/>
<h:outputText value="quantidadeCreditos"/>
<h:inputText label="quantidadeCreditos"
value="#{DisciplinaManagedBean.disciplina.quantidadeCreditos}"/>
<h:outputText value="nomeProfessor"/>
<h:inputText label="nomeProfessor"
value="#{DisciplinaManagedBean.disciplina.nomeProfessor}"/>
<h:outputText value="curso"/>
<h:selectOneMenu required="true" label="curso"
value="#{DisciplinaManagedBean.disciplina.curso}">
<f:selectItems value="#{CursoManagedBean.cursos}"
/>
<f:converter converterId="CursoConverter"/>
</h:selectOneMenu>
</h:panelGrid>
<br>
<h:messages errorClass="error"></h:messages>
<div style="text-align:center">
<h:commandButton value="Save"
action="#{DisciplinaManagedBean.newDisciplina}" styleClass="save"/>
<h:commandButton value="Cancel" immediate="true"
action="listDisciplina" styleClass="cancel"/>
</div>
</h:form>
</body>
</html>
</f:view>
editDisciplina.jsp
<td>
<h:inputText label="nomeProfessor"
value="#{DisciplinaManagedBean.disciplina.nomeProfessor}"/>
</td>
</tr>
<tr>
<td>curso</td>
<td>
<h:selectOneMenu required="true"
label="curso" value="#{DisciplinaManagedBean.disciplina.curso}">
<f:selectItems
value="#{CursoManagedBean.cursos}" />
<f:converter
converterId="CursoConverter"/>
</h:selectOneMenu>
</td>
</tr>
</table>
<br>
<h:messages errorClass="error"></h:messages>
<div style="text-align:center">
<h:commandButton value="Save"
action="#{DisciplinaManagedBean.editDisciplina}" styleClass="save"/>
<h:commandButton value="Cancel" immediate="true"
action="listDisciplina" styleClass="cancel"/>
</div>
</h:form>
</body>
</html>
</f:view>
listDisciplina.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<f:view>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"/>
<title>List of Disciplina</title>
</head>
<body>
<div class="line-separator"></div>
<div style="text-align:center">
<h1 class="title">List of Disciplina</h1>
</div>
<div class="line-separator"></div>
<br>
<h:form>
<h:dataTable
value="#{DisciplinaManagedBean.listaDisciplinas}" var="item"
styleClass="list_table" headerClass="header" rowClasses="row1,row2">
<h:column>
<f:facet name="header" >
<h:outputText value="id"/>
</f:facet>
<h:outputText value="#{item.id}"/>
</h:column>
<h:column>
value="quantidadeCreditos"/>
</f:facet>
<h:outputText
value="#{item.quantidadeCreditos}"/>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="nomeProfessor"/>
</f:facet>
<h:outputText
value="#{item.nomeProfessor}"/>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="curso"/>
</f:facet>
<h:outputText value="#{item.curso}">
<f:converter
converterId="CursoConverter"/>
</h:outputText>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="Editar"/>
</f:facet>
<h:commandLink value="editar" type="submit"
action="editDisciplina"
actionListener="#{DisciplinaManagedBean.findDisciplina}" >
<f:attribute name="codDisciplina"
value="#{item.id}"/>
</h:commandLink>
</h:column>
<h:column>
<f:facet name="header" >
<h:outputText value="Remover"/>
</f:facet>
<h:commandLink value="remover" type="submit"
actionListener="#{DisciplinaManagedBean.removeDisciplina}" >
<f:attribute name="codDisciplina"
value="#{item.id}"/>
</h:commandLink>
</h:column>
</h:dataTable>
<br>
<div style="text-align:center">
<h:commandButton value="Back to Index"
immediate="true" action="index" styleClass="button"/>
<h:commandButton value="New Disciplina"
immediate="true" action="newDisciplina" styleClass="button"/>
</div>
</h:form>
</body>
</html>
</f:view>
17) Vamos adicionar as regras de navegao no arquivo faces-config.xml que est na pasta
WebContent/WEB-INF. O cdigo final do arquivo segue abaixo:
faces-config.xml
<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<converter>
<converter-id>CursoConverter</converter-id>
<converter-class>converters.CursoConverter</converter-class>
</converter>
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>newDisciplina</from-outcome>
<to-view-id>/Disciplina/newDisciplina.jsp</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>editDisciplina</from-outcome>
<to-view-id>/Disciplina/editDisciplina.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>listDisciplina</from-outcome>
<to-view-id>/Disciplina/listDisciplina.jsp</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>index</from-outcome>
<to-view-id>/index.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/Disciplina/newDisciplina.jsp</from-view-id>
<navigation-case>
<from-outcome>newSuccess</from-outcome>
<to-view-id>/Disciplina/listDisciplina.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/Disciplina/editDisciplina.jsp</from-view-id>
<navigation-case>
<from-outcome>editSuccess</from-outcome>
<to-view-id>/Disciplina/listDisciplina.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>newPessoa</from-outcome>
<to-view-id>/Pessoa/newPessoa.jsp</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>editPessoa</from-outcome>
<to-view-id>/Pessoa/editPessoa.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>listPessoa</from-outcome>
<to-view-id>/Pessoa/listPessoa.jsp</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>index</from-outcome>
<to-view-id>/index.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/Pessoa/newPessoa.jsp</from-view-id>
<navigation-case>
<from-outcome>newSuccess</from-outcome>
<to-view-id>/Pessoa/listPessoa.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/Pessoa/editPessoa.jsp</from-view-id>
<navigation-case>
<from-outcome>editSuccess</from-outcome>
<to-view-id>/Pessoa/listPessoa.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>newAluno</from-outcome>
<to-view-id>/Aluno/newAluno.jsp</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>editAluno</from-outcome>
<to-view-id>/Aluno/editAluno.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>listAluno</from-outcome>
<to-view-id>/Aluno/listAluno.jsp</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>index</from-outcome>
<to-view-id>/index.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/Aluno/newAluno.jsp</from-view-id>
<navigation-case>
<from-outcome>newSuccess</from-outcome>
<to-view-id>/Aluno/listAluno.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/Aluno/editAluno.jsp</from-view-id>
<navigation-case>
<from-outcome>editSuccess</from-outcome>
<to-view-id>/Aluno/listAluno.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>newCurso</from-outcome>
<to-view-id>/Curso/newCurso.jsp</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>editCurso</from-outcome>
<to-view-id>/Curso/editCurso.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>listCurso</from-outcome>
<to-view-id>/Curso/listCurso.jsp</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>index</from-outcome>
<to-view-id>/index.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/Curso/newCurso.jsp</from-view-id>
<navigation-case>
<from-outcome>newSuccess</from-outcome>
<to-view-id>/Curso/listCurso.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/Curso/editCurso.jsp</from-view-id>
<navigation-case>
<from-outcome>editSuccess</from-outcome>
<to-view-id>/Curso/listCurso.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
</faces-config>