2017-05-25 28 views
0

在我的春天MVC应用程序,我有一个模型,雇员有一个LocalDate字段dateOfBirth。我将模型从ModelAndView对象的控制器发送到我的jsp。这里dateOfBirth不是用jsp打印的,而且抛出了下面的异常。要转换的源必须是java.lang.String的实例;相反,它是一个java.time.LocalDate

要转换的源必须是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> 

此外,我发送日期在适当的格式,因此不需要解析它。唯一的问题是将日期显示为字符串。

回答

-1

您应该定义转换器以便让Spring将您的HMTL输入的字符串转换为Java对象。我发现这篇文章,我认为这可以帮助你:JSP form date input field

问候!

+0

这并不完全回答这个问题,你应该包括一些示例代码。请参阅:[如何编写一个好的答案?](https://stackoverflow.com/help/how-to-answer) – CodingNinja

+0

嗨..这种方法工作正常从jsp输入控制器。但是当数据从控制器传递给jsp时,它仍然不起作用。现在引发另一个错误消息“无法从LocalDate转换为日期”。在InitiBinder中,我使用LocalDate进行绑定。 – Sriram

0

您应该在您的模型类属性dateOfBirth中使用@DateTimeFormat注释以您所需的日期格式。

例子:

import org.springframework.format.annotation.DateTimeFormat; 

@DateTimeFormat(pattern = "dd-MM-yyyy") 
private LocalDate dateOfBirth; 

您可以将@DateTimeFormat注释java.util.Date,java.util.Calendar中,java.lang.Long中,乔达时间值类型;从Spring 4和JDK 8到JSR-310 java.time类型。

查看API Reference了解更多。

+0

我已经在我的模型类中应用了注释,并且它在后端工作正常。当我尝试在jsp中显示它时,抛出“无法从LocalDate转换为日期”错误。另外,当我直接在jsp上打印LocalDate时,它工作正常。但是我无法从命令对象中显示它。 – Sriram

0

将您的LocalDate对象转换为字符串,然后将其打印出来。

LocalDate localDate = LocalDate.now();//For reference 
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd LLLL yyyy"); 
String formattedString = localDate.format(formatter); 

应打印5月26日2017年

+0

这也是我的尝试。我改变了我的getter方法以字符串形式返回LocalDate字段。即使这样我在jsp页面中也遇到了同样的错误。 – Sriram

相关问题