2013-10-26 67 views
0

我正在使用注释的Spring MVC。 我还没有注册任何customDateEditoryBinding CustomDateEditor spring Mvc

在我的课,我有型的一个属性java.lang.Date

我读那是什么和CustomDateEditor默认情况下未注册。但是,当我提出我的表格空的日期是抛出:IllegalArgumentException -

如果我输入日期,然后犯规抛出异常

那之后我加入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 + "]"; 
    } 


} 

请抛出一些轻

+0

请显示您的控制器类和您的类包含'日期'。 –

+0

嗨索蒂里奥斯 我添加的代码的问题。请看看 –

回答

1

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

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

添加

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

得到一些有关你的绑定错误


(BTW:该方法的参数顺序是重要的:BindingResult参数必须是Command对象之后的下一个参数应该检查这个BindingResult

+0

嗨拉尔夫 首先感谢您的帮助 因此,有没有需要注册和CustomDateEditor? –

+0

我只解释了为什么“...我添加了BindingResult作为控制器方法的参数,现在它接受空白值”'works' – Ralph