在我的spring MVC应用程序中,我有一个模型,Employee有一个LocalDate字段dateOfBirth。我将模型从我的控制器在ModelAndView对象中发送到我的jsp。这里没有在jsp中打印dateOfBirth,并抛出了以下异常。
要转换的源必须是java.lang.String的实例;相反,它是一个java.time.LocalDate
这是我的jsp片段显示我的模型对象。
<form:form id="employeeForm" modelAttribute="command" action="${addEmployee}" method="POST">
<table>
<tr>
<td>Name: </td>
<td><form:input path="name"/></td>
</tr>
<tr>
<td>Date of Birth: </td>
<td><form:input path="dateOfBirth"/></td>
</tr>
<tr>
<td>Designation: </td>
<td><form:input path="designation"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Submit"/></td>
</tr>
</table>
</form:form>
此外,我以正确的格式发送日期,因此无需解析它。唯一的问题是将日期显示为String。
答案 0 :(得分:0)
您应该在模型类属性@DateTimeFormat
中使用dateOfBirth
注释,并使用所需的日期格式。
示例:强>
import org.springframework.format.annotation.DateTimeFormat;
@DateTimeFormat(pattern = "dd-MM-yyyy")
private LocalDate dateOfBirth;
您可以将@DateTimeFormat
注释应用于java.util.Date,java.util.Calendar,java.lang.Long,Joda-Time值类型;从Spring 4和JDK 8开始,到JSR-310也是java.time类型。
请参阅API Reference了解更多信息。
答案 1 :(得分:0)
将LocalDate
对象转换为String,然后将其打印出来。
LocalDate localDate = LocalDate.now();//For reference
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd LLLL yyyy");
String formattedString = localDate.format(formatter);
应该打印2017年5月26日。
答案 2 :(得分:-1)
你应该定义转换器,以便让你的HMTL输入的字符串转换成Java的对象。我发现这篇文章,我认为可以帮到你:JSP form date input field
问候!