2013-02-06 108 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