带有thymeleaf的日期类型

5ktev3wc  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(400)

使用thymeleaf时,我在html模板的form post方法中遇到以下错误:

There was an unexpected error (type=Bad Request, status=400).
Validation failed for object='miembro'. Error count: 2
org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors
Field error in object 'miembro' on field 'fechaIngreso': rejected value [2020-10-12]; codes [typeMismatch.miembro.fechaIngreso,typeMismatch.fechaIngreso,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [miembro.fechaIngreso,fechaIngreso]; arguments []; default message [fechaIngreso]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'fechaIngreso'; nested exception is java.lang.IllegalArgumentException: Could not parse date: Unparseable date: "2020-10-12"]
Field error in object 'miembro' on field 'fechaNacimiento': rejected value [1992-11-12]; codes [typeMismatch.miembro.fechaNacimiento,typeMismatch.fechaNacimiento,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [miembro.fechaNacimiento,fechaNacimiento]; arguments []; default message [fechaNacimiento]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'fechaNacimiento'; nested exception is java.lang.IllegalArgumentException: Could not parse date: Unparseable date: "1992-11-12"]

似乎是日期解析的问题。被拒绝的值是yyyy-mm-dd格式的,但我总是在项目中的每个日期属性中插入这种格式的选项。例子:

@Entity
public class Miembro extends Persona {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int idMiembro;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @Temporal(TemporalType.DATE)
    private Date fechaIngreso;

此外,sql列类型被正确Map为“date”类型。
代码的ELEAF部分:

<div class="jumbotron" th:if="${habilitarIngreso}">
  <form th:action="principal" th:object="${miembroP}" method="post">
    <label>Nombre</label>
    <input type="text" th:field="*{nombre}" 
    placeholder="Ingrese nombre"/>
     <label>Apellido</label>
     <input type="text" th:field="*{apellido}" 
    placeholder="Ingrese apellido"/>
      <label>D.N.I</label>
     <input type="number" th:field="*{dni}" 
    placeholder="Ingrese dni"/>
          <label>Teléfono</label>
     <input type="number" th:field="*{telefono}" 
    placeholder="Ingrese teléfono"/>
    <label>Dirección</label>
    <input type="text" th:field="*{direccion}" 
   placeholder="Ingrese dirección"/>  
   <label>Fecha Nacimiento</label>
     <input type="date" th:field="*{fechaNacimiento}" 
    placeholder="Ingrese fecha de nacimiento"/>   
    <label>Fecha de ingreso</label>
     <input type="date" th:field="*{fechaIngreso}" 
    placeholder="Ingrese fecha de ingreso"/>
      <input type="submit" value="Enviar"/>
  </form>
</div>

你能告诉我发生了什么事吗?

nmpmafwu

nmpmafwu1#

我通过将所有日期变量从date改为localdate来修复它。我不知道这到底是为什么,似乎thymeleaf不太适合与日期库

相关问题