[英]spring boot not registering optional GET parameter
我正在學習教程,並且具有以下方法:
@RequestMapping(value = "/viewstatus", method = RequestMethod.GET)
ModelAndView viewStatus(ModelAndView modelAndView, int pageNumber) {
System.out.println();
System.out.println("===========" + pageNumber + "===========");
System.out.println();
modelAndView.setViewName("app.viewStatus");
return modelAndView;
}
但是,當我轉到http://localhost:8080/viewstatus?p=11
,出現以下錯誤:
Optional int parameter 'pageNumber' is present but cannot be translated into a null value due to being declared as a primitive type. Consider declaring it as object wrapper for the corresponding primitive type.
我將int
參數更改為Long
但導航到同一頁面時,在控制台中獲得以下輸出:
===========null===========
該參數為null,因此基本上不會被識別,但是據我所知,我遵循該教程,您能看到我的代碼有問題嗎?
添加一個@RequestParam
批注以將url變量映射到方法參數
public ModelAndView viewStatus(ModelAndView modelAndView,
@RequestParam("p") int pageNumber) {
在參數的類型和名稱之前,在方法的簽名中使用@RequestParam
。 名稱必須與url參數匹配。 請記住,必須使用Wrapper類,因為基本類型不支持空值。
ModelAndView viewStatus(
ModelAndView modelAndView,
@RequestParam(value = "p", required=false) Integer pageNumber
){
//...
}
首先使用@RequestParam
批注將GET
值映射到方法參數。 然后,如果要使該參數成為可選參數 ,則可以將@RequestParam
的required
屬性指定為false 。
如果要為參數分配一些default value
,則可以使用defaultValue
屬性。
注意:如果GET params
KEY
名稱等於Method Argument
名稱,則不必使用value
屬性。
ModelAndView viewStatus(
ModelAndView modelAndView,
@RequestParam(required=false) Integer p
){
//...
}
由於您使用的是原始int
因此它們無法保存null
值。 因此,您可以使用Wrapper
類Integer
。 但是請記住使用@RequestParam
將GET
值映射到method argument
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.