2013-12-16 70 views
0

在spring-mvc中,在控制器代碼中,我看到了顯式傳遞的窗體參數。爲什麼這樣做?@FormParameter in spring -mvc

public ModelAndView methodXX(
     @FormParam("arg1") String arg1, 
     @FormParam("arg2") String arg2, 
     @FormParam("arg3") String arg3, 
     HttpServletRequest request, HttpServletResponse response) 

如果呼叫如下:

public ModelAndView methodXX(HttpServletRequest request,HttpServletResponse response) 

的ARG1,ARG2,ARG3仍可以通過使用

的request.getParameter( 「ARG1」)對所得到的等其他。 使用FormParam有什麼好處?

回答

6

Spring MVC中沒有@FormParam註釋,至少不是我知道的任何版本。 Spring MVC有@RequestParam

的主要好處是降低在呼叫

request.getParameter("arg1"); 

然而碼重複,@RequestParam還具有其他參數,即requireddefaultValuerequired設置爲true,如果getParameter返回null,Spring將拋出異常。 required設置爲false,Spring將調用getParameter並通過它發現的任何內容,無論是null還是實際值。

使用defaultValue,如果getParameter返回null,則可以設置默認值。

因此而不是做

String arg1 = request.getParameter("arg1"); 
if (arg1 == null) { 
    arg1 = "default value"; 
} 

您只需添加下面的方法參數

..., @RequestParam(value = "arg1", defaultValue = "default value") String arg1, ... 
0

如果您在請求中使用的應用程序/ x-WWW的形式urlencoded的內容類型, 您可以在POST正文中發送數據。

方法= RequestMethod.POST,消耗= 「應用程序/ x WWW的形式進行了urlencoded」

在這種情況下,在POST請求體中的數據必須是格式 ARG1 = 1 & ARG2 =的5 & arg3 = 6

在Chrome瀏覽器的Postman插件中爲請求主體類型選擇'raw'來測試。內容類型應用程序/ x-www-form-urlencoded