我正在開發一個Spring 3項目,並且總是檢查@ModelAttribute是否爲null,如果是的話,我將用戶重定向到一個錯誤頁面。Spring MVC:是否有必要測試@ModelAttribute是否爲null?
@Controller
@SessionAttributes({"myCommand"})
public class MyController {
@ModelAttribute("myCommand")
public MyCommand populate(HttpServletRequest request) {
return new MyCommand();
}
@RequestMapping(value="/user/saveFoo", method=RequestMethod.POST)
public String saveFoo(HttpServletRequest request, @ModelAttribute("myCommand") MyCommand myCommand) {
if(myCommand == null) {
// Add invalid session error here.
return "error.htm";
}
...
...
}
}
我想知道的是如果這項檢查是必要的。該命令是一個會話屬性,並且在必要時使用控制器的填充方法創建。因此,只要會話處於活動狀態,命令就永遠不會爲空。
我不知道會話過期時會發生什麼。控制器是否再次創建模型屬性?如果是這樣,那麼無論會話的狀態如何,命令對象都不能爲空。
感謝您的任何幫助。
我相信如果'@ ModelAttribute'來自會話,並且您沒有'@ModeAttribute'方法來創建一個'MyCommand',並且您的會話超時了,那麼它有可能是'null '。但是,這是一個簡單的測試。打開你的應用程序,在打開這個處理程序之前就着手處理它,讓它靜靜地等待,比如一個小時,或者任何你有會話超時的設置。繼續,看看你是否在那裏得到一個null(可能想把一個SOP放在那裏,所以你知道它是空的)。 – CodeChimp