我使用Postman发送一个id列表到控制器
localhost:8090/test/customer?id=1,2
和控制器一样
@GetMapping
public List<Customer> getCustomerListById(Optional<List<Integer>> customerId){
return getCustomerByIdService.getCustomerById(customerId.get());
}
我的CustomerRepo就像这样
public interface CustomerRepo extends CrudRepository<Customer , Integer>{
public List<Customer> findByCustomerIdIn(List<Integer> customerId);
}
但它会像这样得到错误
{
"timestamp": 1528884327211,
"status": 500,
"error": "Internal Server Error",
"exception": "java.util.NoSuchElementException",
"message": "No value present",
"path": "/test/customer"
}
答案 0 :(得分:1)
在您的网址中,参数的名称为customer
,但在您的控制器方法中,参数名称为customerId
,它们不相同
答案 1 :(得分:0)
得到:
localhost:8090/test/customer?id=1,2
一旦你得到逗号分隔的id,你就可以拆分它们并做你需要做的事情。
代码:
@GetMapping("/test/customer/{id}")
public List<Customer> getCustomerListById(@PathVariable String id) List<String> id,
{
....
}
答案 2 :(得分:0)
通过调试chrome检查您的请求。 在浏览器上部署应用程序时,您将在Developer's工具中看到网络选项卡。 从那里选择你的Get请求并将其粘贴到Postman