绑定CustomDateEditor spring Mvc

时间:2013-10-26 15:57:34

标签: java spring spring-mvc

我正在使用带有注释的Spring MVC。 我没有注册任何customDateEditory

在我的类中,我有一个类型为java.lang.Date的属性

我读到的是默认情况下未注册customDateEditor。但是当我提交带有空白日期的表单时,它会抛出illegalArgumentException

如果我输入日期然后提交则不会引发异常

之后我将BindingResult添加为控制器方法的参数,现在它接受空白值

我没有在控制器中添加任何启动器

控制器

   @Controller("orderController")
   @RequestMapping(value = "/admin")
    public class OrderController extends BaseController {



    @RequestMapping(value = "/viewOrders.htm", method = RequestMethod.GET)
    public String viewOrders(@ModelAttribute("searchOrder") SearchOrder       searchOrder,BindingResult bindingResult,Model model) {

        List<Order> orders=orderService.getOrders(searchOrder);
        model.addAttribute("orders", orders);

        return "order/searchOrder";
    }
    }

Pojo包含日期字段

public class SearchOrder {

    private Integer orderId;
    private Long customerId;
    private String customerPo;
    private Date dateCreatedFrom;
    private Date dateCreatedTo;
    private Date dateUpdatedFrom;
    private Date dateUpdatedTo;


    public Integer getOrderId() {
        return orderId;
    }

    public void setOrderId(Integer orderId) {
        this.orderId = orderId;
    }

    public Long getCustomerId() {
        return customerId;
    }

    public void setCustomerId(Long customerId) {
        this.customerId = customerId;
    }

    public String getCustomerPo() {
        return customerPo;
    }

    public void setCustomerPo(String customerPo) {
        this.customerPo = customerPo;
    }

    public Date getDateCreatedFrom() {
        return dateCreatedFrom;
    }

    public void setDateCreatedFrom(Date dateCreatedFrom) {
        this.dateCreatedFrom = dateCreatedFrom;
    }

    public Date getDateCreatedTo() {
        return dateCreatedTo;
    }

  public void setDateCreatedTo(Date dateCreatedTo) {
        this.dateCreatedTo = dateCreatedTo;
    } 

    public Date getDateUpdatedFrom() {
        return dateUpdatedFrom;
    }

    public void setDateUpdatedFrom(Date dateUpdatedFrom) {
        this.dateUpdatedFrom = dateUpdatedFrom;
    }

    public Date getDateUpdatedTo() {
        return dateUpdatedTo;
    }

    public void setDateUpdatedTo(Date dateUpdatedTo) {
        this.dateUpdatedTo = dateUpdatedTo;
    }

@Override
    public String toString() {
        return "SearchOrder [orderId=" + orderId + ", customerId=" + customerId
                + ", customerPo=" + customerPo + ", dateCreatedFrom="
            + dateCreatedFrom + ", dateCreatedTo=" + dateCreatedTo
                + ", dateUpdatedFrom=" + dateUpdatedFrom + ", dateUpdatedTo="
            + dateUpdatedTo + "]";
    } 


 }

请轻轻一点

1 个答案:

答案 0 :(得分:1)

当您添加BindingResult时,此绑定结果包含有关不起作用的绑定和验证的信息。 您可以使用BindingResult.hasErrors()检查绑定结果是否包含有关“问题”的信息。

如果你没有BindingResult方法参数,那么如果存在绑定错误,Spring会自动抛出异常。

添加

 for(ObjectError objectError : bindingResult.getAllErrors()) {
       Sysout.println("error: " + objectError);
 }

获取有关绑定错误的一些信息


(顺便说一句:方法参数顺序很重要:BindingResult参数必须是应该使用此BindingResult检查的Command对象之后的下一个参数