2013-02-06 162 views
2

我有如下所示弹簧MVC处理对象应用于

@RequestMapping(value="/new", method=RequestMethod.POST) 
public String createBooking(@Valid Booking booking, BindingResult bindingResult, Model model, Principal principal) 
{ 
    if(bindingResult.hasErrors()) { 
     return "booking/edit"; 
    } 
    //Store Booking in db... 
    ... 

问题的弹簧MVC控制器是预定目标i从POST获得由弹簧构成,但所要求的特性之一由验证器不能填充,因为该属性不存在于表单中。所以我的问题是,有没有一种方法可以让我在通过@Valid标记处理程序处理它以添加此必需属性之前拦截Booking?

干杯! NFV

+0

我有问题,像你。可能会有用。 http://stackoverflow.com/questions/40064924/add-value-into-request-object-before-validation?noredirect=1#comment67477926_40064924 – koa73

回答

0

我不确定我是否理解这个问题,但它听起来像是想在命令被表单提交绑定之前将命令对象中的字段设置为一个值。如果是这样,你可以在你的控制器中添加方法如下...

@ModelAttribute 
public Booking getBooking() { 
    Booking booking = new Booking(); 
    booking.setMyRequiredProperty("some value"); 
    return booking; 
} 

希望帮助

+0

这是正确的,但我认为nfvindaloo希望在标准验证之前预处理从窗体提交的bean适用(@Valid)。应用自定义验证器很容易,但不是标准验证器。也许这是一个答案 - http://stackoverflow.com/questions/18049204/possible-to-modify-modelattribute-before-validated-is-run。 – Xdg

+0

不,这不是答案 - 首先执行@ModelAttribute方法,然后执行参数@ModelAttribute,bean从表单填充,然后我们被完成 - 读这个http://stackoverflow.com/questions/25011568/spring -mvc-modelattribute-method。所以我不知道如何在@ Valid之前预处理类。 – Xdg