带有百里香的日期类型



使用Thymeleaf时,我在html模板的表单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,但是我已经在项目中的每个Date属性中插入了该格式的注释。例子:

@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列类型被正确映射为"date"类型。

代码中有问题的百里香部分:

<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>

你能给我提示一下发生了什么吗?

我通过将所有日期变量从date更改为LocalDate来修复它。不知道为什么这工作,似乎thyymeleaf不太适合日期库

相关内容

  • 没有找到相关文章

最新更新