2012-12-07 119 views
1

我有一個請求hanlder(@Controller類中的方法),當提交表單時調用了一些@RequestParam參數。我有各種類型的參數,如字符串,整數,枚舉和對象... 當表單提交如果春天不能綁定一個參數參數,返回一個響應 錯誤400或500(我還沒有理解哪些情況下對應到每個錯誤呢)。 我希望通過向用戶發送反饋來突出顯示錶單中的哪個字段不好以及爲什麼要處理這種不匹配...Spring:在@RequestParam中輸入類型不匹配時處理錯誤

這樣做的一個簡單情況是將所有@RequestParams更改爲字符串,並進行轉換在處理程序內部,並在出現錯誤時迴應反饋。 (從類型不匹配到無效參數,即年齡的負數,錯誤可能不同)。

有沒有更好的方法?

回答

2

@RequestParam最適合於由應用程序生成參數而不是由用戶輸入的情況。

如果您想向用戶提供反饋,最好使用@ModelAttributeBindingResult的傳統表單處理方法。這樣你可以執行任意驗證,也可以使用provide meaningful error messages for type mismatch errors

+0

你的意思是說:「對於你的應用程序生成參數的情況」?我的應用程序如何生成requestParam?你的意思是轉發請求? – ApollonDigital

+0

@AollonDigital:我的意思是當用戶跟隨​​由應用程序生成的鏈接(帶有參數)而不是在表單中輸入值時的情況。 – axtavt

+0

在任何情況下,您都無法確定是否有任何請求可以進入服務器。任何人都可以創建併發送自定義請求。我不認爲這種實現應該有所不同。無論如何... 即時通訊相對較新的春天,所以任何額外的細節將appriciated。我搜索了一下,發現了一些像JSR-303 ...我不知道它是什麼,如果與javax.validation包有任何關係...... – ApollonDigital