簡體   English   中英

Spring Boot未注冊可選的GET參數

[英]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值映射到方法參數。 然后,如果要使該參數成為可選參數 ,則可以將@RequestParamrequired屬性指定為false

如果要為參數分配一些default value ,則可以使用defaultValue屬性。

注意:如果GET params KEY名稱等於Method Argument名稱,則不必使用value屬性。

    ModelAndView viewStatus(
        ModelAndView modelAndView, 
        @RequestParam(required=false) Integer p
    ){
        //...
    }

由於您使用的是原始int因此它們無法保存null值。 因此,您可以使用WrapperInteger 但是請記住使用@RequestParamGET值映射到method argument

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM