[英]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.