Spring initBinder不调用CustomDateEditor

时间:2016-01-31 05:20:29

标签: java spring spring-mvc spring-mvc-initbinders

我正在尝试使用以下代码将字符串输入表单参数绑定到bean的date属性。 我想绑定日期格式化程序 仅限于bean registrationDate的名为User的特定属性。我已经尝试了各种方法来指定字段名称 registrationDate来电binder.registerCustomEditorCustomDateEditor永远不会被调用。

CustomDateEditor有效 只有当我从binder.registerCustomEditor调用中删除字段名称并使其成为所有日期字段的全局字符时,如下所示 下面控制器中initBinderAll()方法中的最后一个注释行。 希望有人指出我正确的方向。

user.jsp: -

<form:form action="/some_url" modelAttribute="user">
    <input type="text" id="registrationDate" name="registrationDate" value="${regDate}" />
</form:form>      

User.java: -

@Entity
@Table(name="user")
public class User {
    @Column(name = "reg_date")
    @Temporal(TemporalType.DATE)
    private Date registrationDate;
}   

UserController.java: -

@Controller
public class UserController {
    @RequestMapping(value = "/some_url", method = RequestMethod.POST)
    public String handleSubmission(
            @ModelAttribute("user")@Valid User user, BindingResult result) throws IOException {
    }

    @InitBinder
    public void initBinderAll(WebDataBinder binder) {
        binder.registerCustomEditor(Date.class, "user.registrationDate", new CustomDateEditor(new SimpleDateFormat("yyyy-dd-MM"), false));

        binder.registerCustomEditor(Date.class, "User.registrationDate", new CustomDateEditor(new SimpleDateFormat("yyyy-dd-MM"), false));

        binder.registerCustomEditor(Date.class, "registrationDate", new CustomDateEditor(new SimpleDateFormat("yyyy-dd-MM"), false));

        //binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-dd-MM"), true));
    }
}

0 个答案:

没有答案