3.4 Pessoa.java (Classe que representa o JavaBean)
package br.aiec; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class Pessoa { private String nome; private Date dataNascimento; 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; } /** * Método que recebe a dataNascimento no formato String dd/MM/yyyy e transforma no tipo adequado. * * @param dataNascimento * @throws ParseException */ public void setDataNascimentoString(String dataNascimento) throws ParseException { SimpleDateFormat sf = new SimpleDateFormat("dd/MM/yyyy"); this.dataNascimento = sf.parse(dataNascimento); } /** * Esse método retorna a data formatada (tipo String) * * @return Data no formato dd/MM/yyyy * @throws ParseException */ public String getDataNascimentoString() throws ParseException { SimpleDateFormat sf = new SimpleDateFormat("dd/MM/yyyy"); return sf.format(dataNascimento); } public int getIdade(){ Calendar hoje = GregorianCalendar.getInstance(); hoje.setTime(new Date()); Calendar nascimento = GregorianCalendar.getInstance(); nascimento.setTime(dataNascimento); int quantidadeAnos = hoje.get(Calendar.YEAR) - nascimento.get(Calendar.YEAR); nascimento.add(Calendar.YEAR, quantidadeAnos); if(nascimento.after(hoje)){ quantidadeAnos--; } return quantidadeAnos; } }
Observe que a classe Pessoa teve que incorporar os métodos de conversão/formatação da data. Isso foi necessário, pois todo o código de scriptlet foi retirado da página “BeanPessoaLivroVisitas.jsp”. No próximo módulo, utilizaremos as tags específicas da JSTL para formatar a data sem scriptlets. Por ora, manteremos, temporariamente, a referida funcionalidade na classe “Pessoa”.