在Spring MVC中将字符串日期从表单数据更改为日期日期的解决方案

时间:2018-08-23 09:40:50

标签: java spring eclipse spring-mvc

我要将String日期从表单数据更改为java Date格式,因为我将其传递给一个类,并在以后制作该类的对象进行存储。

这是我的代码

表单文件

<hr>
    <label for="firstname"><b>First Name</b></label>
    <input type="text" placeholder="Enter First Name" name="FirstName" required>

    <label for="middlename"><b>Middle Name</b></label>
    <input type="text" placeholder="Enter Middle Name" name="MiddleName" required>

    <label for="lastname"><b>Last Name</b></label>
    <input type="text" placeholder="Enter Last Name" name="LastName" required>

    <label for="email"><b>Email</b></label>
    <input type="text" placeholder="Enter Email" name="Email" required>

    <label for="dob"><b>Enter Date of birth</b></label><br/>
    <input type="date" name="DOB" required><br/><br/>

jsp重定向文件

<%
        Employee obj = new Employee();
        obj.setFirstName(request.getParameter("FirstName"));
        obj.setMiddleName(request.getParameter("MiddleName"));
        obj.setLastName(request.getParameter("LastName"));
        //obj.setDob((String)request.getParameter("dob"));
        //**I wanna set the date here......**
        obj.setFirstName(request.getParameter("FirstName"));    
     %>

我该如何解决这个问题。我目前正在构建Spring MVC网络应用。

任何建议或帮助都将受到赞赏。 谢谢你也一样。

3 个答案:

答案 0 :(得分:0)

我认为最简单的方法是最好的,请尝试:

Date date1 = new SimpleDateFormat("dd/MM/yyyy").parse((String)request.getParameter("dob")); 

答案 1 :(得分:0)

您应该考虑使用Java的新LocalDate及其parse方法。 this article中对使用它进行了很好的描述。

如果您确实需要Date,则可以从生成的LocalDate中获取它:

Date date = Date.from(localDate.toInstant());

答案 2 :(得分:0)

为此的通用解决方案是使用Spring内置注释@InitBinder,以便完整控制器中的所有日期都将自动转换为所需的格式。您不必手动逐字段解析。

@InitBinder
public final void initBinder(final WebDataBinder binder, final Locale locale) {
    final SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy", locale);
    binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));    
}

请参阅此线程以更清楚地了解InitBinder。

https://stackoverflow.com/a/5211344/6572971