0

我正在开发带有注释的 Spring MVC。我还没有注册任何 customDateEditory

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

我读到的是 customDateEditor 默认没有注册。但是当我提交带有空白日期的表单时,它会抛出非法ArgumentException

如果我输入日期然后提交它不会抛出异常

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

我没有在我的控制器中添加任何 initbinder

控制器

   @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 + "]";
    } 


 }

请投一些光

4

1 回答 1

1

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

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

添加

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

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


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

于 2013-10-26T20:07:14.027 回答