Calcular idade atraves da data de nasimento

0 respostas
jsfjava
N

Boa noite pessoal, estou fazendo uma aplicação java e deparei com uma dificuldade em chamar o meu método de calcular idade para fazer esse calculo com base na data de nascimento e atualizar o campo da idade quando o usuário clicar fora do campo da data de nascimento.
Sou novo na linguagem.
Obrigado

minha classe para calcular a idade é:

public class CalculaIdade {

public CalculaIdade(Date data) {

System.out.println(calcIdade(data));
}

public static int calcIdade(Date dataNascimento) {
	Date hoje = new Date();
	Calendar cal = Calendar.getInstance();

	cal.setTime(hoje);
	int mes1 = cal.get(Calendar.MONTH);
	int day1 = cal.get(Calendar.DAY_OF_MONTH);
	int ano1 = cal.get(Calendar.YEAR);

	cal.setTime(dataNascimento);
	int mes2 = cal.get(Calendar.MONTH);
	int day2 = cal.get(Calendar.DAY_OF_MONTH);
	int ano2 = cal.get(Calendar.YEAR);

	int nAno = ano1 - ano2;

	System.out.format("day1: %s, day2: %s%n", day1, day2);

	if (mes1 < mes2) {
		nAno--;
	} else if (mes1 == mes2) {
		if (day1 < day2)
			nAno--;
	}
	// Ainda não completou aniversario esse ano.

	return nAno;

}

}

Minha pagina jsf:

<p:outputLabel value=Nome for=nomepac />

<p:inputText id=nomepac size=40 maxlength=255"

value=”#{cadastroPessoaBean.pessoa.nome}" />
<p:outputLabel value="Celular" for="tel" />
			<p:inputMask id="tel" maxlength="20"
				value="#{cadastroPessoaBean.pessoa.telefone}"
				mask="([telefone removido]" />

			<p:outputLabel value="RG" for="di" />
			<p:inputMask id="di" size="20" maxlength="30"
				value="#{cadastroPessoaBean.pessoa.rg}" />

			<p:outputLabel value="Data de Nascimento" for="dataNascimento" />
			<p:inputMask id="dataNascimento" maxlength="10"
				value="#{cadastroPessoaBean.pessoa.dataNascimento}"
				mask="99/99/9999">
				<f:convertDateTime pattern="dd/MM/yyyy" />
			</p:inputMask>

			<p:outputLabel value="Idade" for="ida" />
			<h:outputText id="ida" size="10" maxlength="10"
				value="#{cadastroPessoaBean.pessoa.idade}" />

		</p:panelGrid>
Criado 17 de setembro de 2017
Respostas 0
Participantes 1