繁体   English   中英

如何使用@RequestParam 捕获多个 url 参数?

[英]How to capture multiple url parameters using @RequestParam?

我有这个方法:

@GetMapping("/restaurant")
public List<Restaurant> list(@RequestParam(required = false) String nameRestaurant, @RequestParam(required = false)String nameProduct){
    if (nameRestaurant== null && nameProduct== null ) {
        return restaurantRepository.findAll();
    }
     else if (!nameProduct.isEmpty()){
         return restaurantRepository.findByNameProduct(nameProduct);
    }
    else {
        return restaurantRepository.findByNameRestaurant(nameRestaurant);
    }
}

只有 'IF' 和 'ELSE IF' 工作并返回 JSON,'ELSE' 总是返回 500(NullPointerException)。 如果我用“ELSE”反转“ELSE IF”,“ELSE IF”中的内容会起作用,而“ELSE”则不会,有什么原因吗?

我认为您在验证中缺少 null 检查器。 第一个 if 检查nameRestaurant AND nameProduct是否为null ,这意味着在else / else if nameRestaurant OR nameProduct可能为null (可能导致NullPointerException )。

可能将您的代码更改为以下内容会起作用:

@GetMapping("/restaurant")
public List<restaurant> list(@RequestParam(required = false) String nameRestaurant,
                             @RequestParam(required = false) String nameProduct) {
   if (nameRestaurant != null && !nameRestaurant.isEmpty()) {
      return restaurantRepository.findByNameRestaurant(nameRestaurant);
   }
   if (nameProduct != null && !nameProduct.isEmpty()) {
      return restaurantRepository.findByNameProduct(nameProduct);
   }
   
   return restaurantRepository.findAll();

}

改用网址:

// Get all restaurants
@GetMapping("/restaurant")
/restaurant

// Get restaurant by name
@GET
@Path("/restaurant")
@PathParam("name")String name
/restaurant/{name}

// Get product by restaurant and product name
@GET
@Path("/restaurant")
@PathParam("name")String name, @PathParam("product")String product
/restaurant/{name}/{product}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM