使用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不太适合日期库