Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

396
Vistas
LocalDate en forma

Tengo una pregunta sobre el formato de fecha Spring + Thymeleaf. Tengo una entidad simple con campo de LocalDate date . Quiero obtener esta fecha de un usuario en forma y guardarla en la base de datos MySQL. Estoy recibiendo un error de este tipo:

No se pudo convertir el valor de propiedad del tipo java.lang.String al tipo requerido java.time.LocalDate para la fecha de la propiedad; la excepción anidada es org.springframework.core.convert.ConversionFailedException: no se pudo convertir del tipo java.lang.String al tipo java.time.LocalDate para el valor 2019-04-30; la excepción anidada es java.time.format.DateTimeParseException: el texto 2019-04-30 no se pudo analizar en el índice 2

Mi entidad:

 @Entity @Table(name="game") public class Game{ @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; @Transient private User gameOwner; private LocalDate date; private LocalTime time; //other fields

Vista / formulario de Thymeleaf:

 <form action="#" th:action="@{/games/addForm}" th:object="${gameForm}" method="post"> <p>Date: <input type="date" th:field="*{date}" /></p> </form>

¿Cuál es la razón de este problema? ¿Quizás hay otra forma mejor de almacenar la fecha?

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Problema resuelto. No sé por qué, pero cambiando mi plantilla a:

 <input type="date" th:value="*{date}" th:field="*{date}" />

y agregar @DateTimeFormat(pattern = "yyyy-MM-dd") al campo de entidad resolvió el problema.

about 4 years ago · Santiago Trujillo Denunciar

0

import org.springframework.format.annotation.DateTimeFormat;

agregue la siguiente anotación arriba de la fecha.

 @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate date;

coloque un corchete adicional alrededor de la fecha. Convertirá la fecha en cadena.

 <form action="#" th:action="@{/games/addForm}" th:object="${gameForm}" method="post"> <p>Date: <input type="date" th:field="*{{date}}" /></p> </form>
about 4 years ago · Santiago Trujillo Denunciar

0

No puedo reproducir el error exacto, pero creo que agregar un editor personalizado para la clase LocalDate debería solucionar esto. Agregue este método a su controlador:

 @InitBinder protected void initBinder(WebDataBinder binder) { binder.registerCustomEditor(LocalDate.class, new PropertyEditorSupport() { @Override public void setAsText(String text) throws IllegalArgumentException{ setValue(LocalDate.parse(text, DateTimeFormatter.ofPattern("yyyy-MM-dd"))); } @Override public String getAsText() throws IllegalArgumentException { return DateTimeFormatter.ofPattern("yyyy-MM-dd").format((LocalDate) getValue()); } }); }

También es posible agregar esto globalmente, tendrá que crear una clase ControllerAdvice y agregar el método allí.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda