要转换的源必须是java.lang.String的实例;相反,它是一个java.time.LocalDate

时间:2017-05-25 22:14:14

标签: java spring jsp

在我的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。

3 个答案:

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

问候!