java.lang.IllegalStateException: Optional int parameter 'money' 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. at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.handleNullValue(AbstractNamedValueMethodArgumentResolver.java:263) ~[spring-web-5.3.25.jar:5.3.25] at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:116) ~[spring-web-5.3.25.jar:5.3.25] at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122) ~[spring-web-5.3.25.jar:5.3.25] at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179) ~[spring-web-5.3.25.jar:5.3.25] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146) ~[spring-web-5.3.25.jar:5.3.25] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.25.jar:5.3.25] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.25.jar:5.3.25] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.25.jar:5.3.25] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.25.jar:5.3.25] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.25.jar:5.3.25] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.25.jar:5.3.25] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.25.jar:5.3.25] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.25.jar:5.3.25]此错误是什么原因引起的?如何修改
时间: 2023-08-31 11:06:11 浏览: 245
这个错误是因为在使用Spring MVC时,您使用了一个int类型的可选参数,但是Spring无法将其转换为null值,因为int是一个原始类型。解决方法是将参数声明为对应的对象包装器类型,例如使用Integer而不是int。这样,如果参数值为null,Spring就可以将其转换为null。修改代码后重新部署即可。
相关问题
java.lang.IllegalStateException: Optional int parameter 'sno' 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.
这个错误是因为在使用Optional作为方法参数时,参数类型是原始类型,而不是对象包装器类型。原始类型无法为null,而Optional可以包含null值,因此会抛出IllegalStateException异常。你需要将参数类型改为对象包装器类型,如Integer。这样,Optional参数就可以包含null值了。
Request processing failed; nested exception is java.lang.IllegalStateException: Optional int parameter 'id' 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怎么办
这个错误通常出现在使用 Spring MVC 框架时,当你在控制器方法中使用 Optional 包装类来接收参数时,参数类型为原始类型(比如 int)而不是对象类型(比如 Integer)。这会导致无法将 null 值转换为原始类型,从而引发异常。
为了解决这个问题,你可以将控制器方法中的参数类型改为对象类型。例如,将 int 改为 Integer。这样,即使参数值为 null,也可以正常地转换为对应的对象类型。
另外,你还可以通过在参数前面添加 @RequestParam(required=false) 注解来指定该参数是可选的,这样即使参数值为 null,也不会引发异常。例如:
```java
@RequestMapping("/test")
public String test(@RequestParam(required=false) Integer id) {
// ...
}
```
这样,即使没有传递 id 参数,也不会引发异常。
阅读全文