Por favor, gostaria de saber qual seria o motivo de estar ocorrendo o warning no Eclipse, que diz: Value is not valid.
Segue duas imagens que exibem os detalhes do referido warning:
Segue o código completo do arquivo XHTML, que aparece nas duas imagens acima:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:jsf="http://xmlns.jcp.org/jsf"
lang="pt-br">
<ui:composition template="layout.xhtml"> <!-- Tudo o que estiver fora da tag "ui:composition" é ignorado. -->
<ui:define name="conteudo">
<h1>Novo aluno</h1>
<div id="infoMessage">
(Aqui vai eventual mensagem de sistema confirmando sucesso ou erro)
</div>
<br />
<form jsf:id="form">
<fieldset>
<legend>Dados pessoais</legend>
<label for="nome">Nome</label><br />
<input type="text" jsf:value="#{alunoBean.aluno.nome}" id="nome" /><br />
<label for ="sexo">Sexo</label><br />
<select jsf:value="#{alunoBean.aluno.sexo}" id="sexo" size="0">
<f:selectItems value="#{dataBean.sexos}" />
</select><br />
<label for="rg">RG</label><br />
<input type="text" jsf:value="#{alunoBean.aluno.rg}" id="rg" /><br />
<label for="dataDeNascimento">Data de Nascimento</label><br />
<input type="date" jsf:value="#{alunoBean.aluno.dataNascimento}" id="dataDeNascimento">
<f:convertDateTime type="localDate" pattern="yyyy-MM-dd" />
</input>
</fieldset>
<br />
<fieldset>
<legend>Situação</legend>
<label for="situacao">Situação</label><br />
<select jsf:value="#{alunoBean.aluno.situacao}" id="situacao" size="0">
<f:selectItems value="#{dataBean.situacoes}"/>
</select>
</fieldset>
<br />
<fieldset>
<legend>Endereço</legend>
<label for="rua">Rua</label><br />
<input type="text" jsf:value="#{alunoBean.aluno.endereco.rua}" id="rua" /><br />
<label for="numero">Número</label><br />
<input type="text" jsf:value="#{alunoBean.aluno.endereco.numero}" id="numero" /><br />
<label for="complemento">Complemento</label><br />
<input type="text" jsf:value="#{alunoBean.aluno.endereco.complemento}" id="complemento" /><br />
<label for="cidade">Cidade</label><br />
<input type="text" jsf:value="#{alunoBean.aluno.endereco.cidade}" id="cidade" /><br />
<label for="estado">Estado</label><br />
<select jsf:value="#{alunoBean.aluno.endereco.estado.sigla}" id="estado" size="0">
<f:selectItems value="#{dataBean.estados}" var="e" itemLabel="#{e.nome}" itemValue="#{e.sigla}" />
</select><br />
<label for="cep">CEP</label><br />
<input type="text" jsf:value="#{alunoBean.aluno.endereco.cep}" id="cep" />
</fieldset>
<br />
<fieldset>
<legend>Contato</legend>
<label for ="email">E-mail</label><br />
<input type="email" jsf:value="#{alunoBean.aluno.email}" id="email" /><br />
<label for="telefoneCelularDDD">Telefone Celular</label><br />
<input type="tel" jsf:value="#{alunoBean.aluno.telefone.dddCelular}" id="telefoneCelularDDD" /> 
<input type="tel" jsf:value="#{alunoBean.aluno.telefone.numeroCelular}" id="telefoneCelularNumero" /><br />
<label for="telefoneFixoDDD">Telefone Fixo</label><br />
<input type="tel" jsf:value="#{alunoBean.aluno.telefone.dddFixo}" id="telefoneFixoDDD" /> 
<input type="tel" jsf:value="#{alunoBean.aluno.telefone.numeroFixo}" id="telefoneFixoNumero" />
</fieldset>
<br />
<input type="submit" value="Gravar" jsf:action="#{alunoBean.gravar}" /> <!-- Aula 5.4 - 08m00s -->
<input type="button" value="Relatório de Acessos" />
</form>
</ui:define>
</ui:composition>
</html>
Segue o código da Classe Java AlunoBean.java, que está relacionada com o referido código XHTML:
package br.com.wagner.loucademia.interfaces.web;
import java.io.Serializable;
import javax.enterprise.context.RequestScoped; //"RequestScoped" significa que este objeto só "viverá", durante o processo de requisição
import javax.inject.Named;
import br.com.wagner.loucademia.domain.aluno.Aluno;
@Named
@RequestScoped
public class AlunoBean implements Serializable {
private static final long serialVersionUID = 1L; /* 06/07/2019 - 23H24M - ESTA LINHA FOI ADICIONADA PELO PRÓPRIO ECLIPSE, PARA QUE NÃO APARECESSE MAIS NENHUMA MENSAGEM DE ERRO DE "SERIAL VERSION UID" */
private Aluno aluno = new Aluno();
public String gravar() {
System.out.println("ALUNO ==> " + aluno);
return null;
}
public Aluno getAluno() {
return aluno;
}
public void setAluno(Aluno aluno) {
this.aluno = aluno;
}
}
Segue o código da outra classe java Aluno.java, que também está relacionada com o código do arquivo XHTML em questão:
package br.com.wagner.loucademia.domain.aluno;
import java.io.Serializable;
import java.time.LocalDate;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.Enumerated;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "ALUNO")
public class Aluno implements Serializable {
private static final long serialVersionUID = 1L; /* 26/06/2019 - 22H08M - ESTA LINHA FOI ADICIONADA PELO PRÓPRIO ECLIPSE, PARA QUE NÃO APARECESSE MAIS NENHUMA MENSAGEM DE ERRO DE "SERIAL VERSION UID" */
public enum Sexo{
Masculino, Feminino;
}
public enum Situacao{
Ativo, Inativo, Pendente;
}
@Id
@Column(name = "ID", nullable = false, length = 8)
private String matricula;
@Column(name = "NOME", nullable = false, length = 64)
private String nome;
@Enumerated
@Column(name = "SEXO", nullable = false, length = 1)
private Sexo sexo;
@Column(name = "RG", nullable = false, length = 10)
private Integer rg;
@Column(name = "NASCIMENTO", nullable = false)
private LocalDate dataNascimento;
@Enumerated
@Column(name = "SITUACAO", nullable = false, length = 1)
private Situacao situacao;
@Column(name = "EMAIL", nullable = true, length = 64)
private String email;
@Embedded
private Endereco endereco = new Endereco();
@Embedded
private Telefone telefone = new Telefone();
public String getMatricula() {
return matricula;
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Sexo getSexo() {
return sexo;
}
public void setSexo(Sexo sexo) {
this.sexo = sexo;
}
public Integer getRg() {
return rg;
}
public void setRg(Integer rg) {
this.rg = rg;
}
public LocalDate getDataNascimento() {
return dataNascimento;
}
public void setDataNascimento(LocalDate dataNascimento) {
this.dataNascimento = dataNascimento;
}
public Situacao getSituacao() {
return situacao;
}
public void setSituacao(Situacao situacao) {
this.situacao = situacao;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Endereco getEndereco() {
return endereco;
}
public void setEndereco(Endereco endereco) {
this.endereco = endereco;
}
public Telefone getTelefone() {
return telefone;
}
public void setTelefone(Telefone telefone) {
this.telefone = telefone;
}
@Override
public String toString() {
return "Aluno [matricula=" + matricula + ", nome=" + nome + ", sexo=" + sexo + ", rg=" + rg
+ ", dataNascimento=" + dataNascimento + ", situacao=" + situacao + ", email=" + email + ", endereco="
+ endereco + ", telefone=" + telefone + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((matricula == null) ? 0 : matricula.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Aluno other = (Aluno) obj;
if (matricula == null) {
if (other.matricula != null)
return false;
} else if (!matricula.equals(other.matricula))
return false;
return true;
}
}
Por favor, peço ajuda para sabe o motivo do Eclipse ficar exibindo o warning dizendo “Value is not valid” para o código da linha 37, do arquivo XHTML que eu transcrevi acima e que contém o seguinte código:
<f:convertDateTime type="localDate" pattern="yyyy-MM-dd" />
Parece que o valor que o Eclipse diz não ser válido é o termo “localDate”.
Por favor, poderiam me ajudar?