Java 使用id获取,返回另一个变量
我正在尝试创建一个get方法,该方法将获取条形码,但返回Java 使用id获取,返回另一个变量,java,spring-boot,Java,Spring Boot,我正在尝试创建一个get方法,该方法将获取条形码,但返回qty!=0 在下面的代码中,我设法获得了条形码返回qty,或者获得了条形码并返回qty==0。但是当我尝试获取qty!=0我收到此错误 java.lang.NullPointerException: null at com.javahelps.restservice.controller.UserController.findd(UserController.java:54) ~[classes/:na] at sun.r
qty!=0
在下面的代码中,我设法获得了条形码返回qty
,或者获得了条形码并返回qty==0
。但是当我尝试获取qty!=0
我收到此错误
java.lang.NullPointerException: null
at com.javahelps.restservice.controller.UserController.findd(UserController.java:54) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_201]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_201]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_201]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_201]
我的代码
@GetMapping(path = "/barcode/{barcode}")
public List<User> findd(@PathVariable("barcode") String barcode,Integer qty) {
return repository.findByQty(qty != 0);
}
@GetMapping(path=“/barcode/{barcode}”)
公共列表findd(@PathVariable(“条形码”)字符串条形码,整数数量){
返回存储库.findByQty(数量!=0);
}
整数数量
定义为对象。如果您的请求不包含qty
的值,则此变量的值为null
,并将null
解装箱为检查qty!=null
会导致NullPointerException
,因为没有可以取消装箱的变量值
您还必须向变量添加映射注释,例如@RequestParam
要解决此问题,可以添加空检查:
@GetMapping(path = "/barcode/{barcode}")
public List<User> findd(@PathVariable("barcode") String barcode, @RequestParam Integer qty) {
if (qty == null) {
return Collections.emptyList();
}
return repository.findByQty(qty != 0);
}
整数数量
将始终为空
,因为您没有为此值设置映射
它可以标记为@RequestParam
@GetMapping(path = "/barcode/{barcode}")
public List<User> findd(@PathVariable("barcode") String barcode,
@RequestParam(defaultValue = "0") Integer qty) {
return repository.findByQty(qty != 0);
}
@GetMapping(path=“/barcode/{barcode}”)
公共列表findd(@PathVariable(“条形码”)字符串条形码,
@RequestParam(defaultValue=“0”)整数数量{
返回存储库.findByQty(数量!=0);
}
在此片段中:
-/barcode/{barcode}?数量=666
数量=666
-/barcode/{barcode}
(默认值)或qty=0
,如果您将其定义为null
@RequestParam Integer qty
Integer
是一个对象
,它可以是null
。如果您设置了defaultValue
这将始终设置为一个值,您可以改为设置int
。每当我添加时,我都会收到这个错误!=它向我展示了这一点,但是=0工作得非常好
@GetMapping(path = "/barcode/{barcode}")
public List<User> findd(@PathVariable("barcode") String barcode,
@RequestParam(defaultValue = "0") Integer qty) {
return repository.findByQty(qty != 0);
}