Java Date()会自动更正我们在输入文本字段中键入的日期

时间:2016-10-27 14:53:17

标签: java date spring-mvc

我有一个带有输入文本字段的Spring mvc表单。我用java Date对象映射该字段。当我输入错误的日期时(例如 34/01/1985 ),在后端会自动更正日期并将其设为 03/02/1985 (03 1985年2月)。我想停止此自动更正以验证后端。

伙计们,给我一个解决方案?

更新:

<form:input path="person.dateOfBirth" placeholder="DD/MM/YYYY"/> 

public class Person  implements Cloneable{

@DateTimeFormat(pattern = "dd/MM/yyyy")
    private Date dateOfBirth;
    public Date getDateOfBirth() {
        return dateOfBirth;
    }
    public void setDateOfBirth(Date dateOfBirth) {
        this.dateOfBirth = dateOfBirth;
    }
}

public void  post( 
            PortletSession session,
            ActionRequest request,
            ActionResponse response, 
            @ModelAttribute("form") Form form,
            BindingResult errors,
            ModelMap mm) throws Exception {

print(form.getPerson().getDateOfBirth());

}

3 个答案:

答案 0 :(得分:1)

[UPDATE; AJAX CALL] 只需使用spring @DateTimeFormat注释并指定pattern

import org.springframework.format.annotation.DateTimeFormat;
class Form {
    ...
    private static final String DATE_PATTERN = "dd/MM/yyyy";
    @DateTimeFormat(pattern = DATE_PATTERN)
    private Date yourDate;
    ...
 }

确保您的Spring MVC Controller确认您的表单:

@RequestMapping(value = "/path")
@ResponseBody
public final boolean validateFormOnSever(@Valid @ModelAttribute("yourForm") final Form form,
                 final BindingResult bindingResult, final Model model) {
   return bindingResult.hasErrors();
}

现在,当您收到false(或类似JSON对象{filed,hasError})时,您会显示所需的消息。

答案 1 :(得分:1)

在前端使用输入类型作为日期。 HTML5五个这个功能,用户只能选择有效的日期,看起来很酷。只需申请并查看结果:)

答案 2 :(得分:0)