🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大小厂~💐
🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥
有解决办法是看注解,我的情况是参数上没有带注解,原因是接口接收参数类型是int,
int类型默认值为0 不能传空
@RequestParam(name = “userId”, required = false, defaultValue = " ") userId: Int
`@RequestParam(name = "userId", required = false, defaultValue = "0") userId: Int `
2022-08-05 10:14:54.157 [http-nio-8080-exec-5] [DEBUG] org.springframework.web.servlet.DispatcherServlet {DispatcherServlet.java:845} - DispatcherServlet with name 'spring-servlet' processing GET request for [/index]
2022-08-05 10:14:54.161 [http-nio-8080-exec-5] [DEBUG] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping {AbstractHandlerMethodMapping.java:297} - Looking up handler method for path /index
2022-08-05 10:14:54.161 [http-nio-8080-exec-5] [DEBUG] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping {AbstractHandlerMethodMapping.java:302} - Returning handler method [public java.lang.String com.xiangshi.wzc.devloper.pc.modules.index.IndexController.index()]
2022-08-05 10:14:54.162 [http-nio-8080-exec-5] [DEBUG] org.springframework.beans.factory.support.DefaultListableBeanFactory {AbstractBeanFactory.java:248} - Returning cached instance of singleton bean 'indexController'
2022-08-05 10:14:54.162 [http-nio-8080-exec-5] [DEBUG] org.springframework.web.servlet.DispatcherServlet {DispatcherServlet.java:931} - Last-Modified value for [/index] is: -1
2022-08-05 10:14:54.163 [http-nio-8080-exec-5] [DEBUG] org.springframework.web.servlet.DispatcherServlet {DispatcherServlet.java:1225} - Rendering view [org.springframework.web.servlet.view.JstlView: name 'index'; URL [/WEB-INF/views/index.jsp]] in DispatcherServlet with name 'spring-servlet'
2022-08-05 10:14:54.165 [http-nio-8080-exec-5] [DEBUG] org.springframework.web.servlet.view.JstlView {InternalResourceView.java:166} - Forwarding to resource [/WEB-INF/views/index.jsp] in InternalResourceView 'index'
2022-08-05 10:14:54.330 [http-nio-8080-exec-5] [DEBUG] org.springframework.web.servlet.DispatcherServlet {FrameworkServlet.java:996} - Successfully completed request
2022-08-05 10:14:54.332 [http-nio-8080-exec-5] [DEBUG] org.springframework.beans.factory.support.DefaultListableBeanFactory {AbstractBeanFactory.java:248} - Returning cached instance of singleton bean 'sqlSessionFactory'
2022-08-05 10:14:54.514 [http-nio-8080-exec-6] [DEBUG] org.springframework.web.servlet.DispatcherServlet {DispatcherServlet.java:845} - DispatcherServlet with name 'spring-servlet' processing GET request for [/order/ExportAll]
2022-08-05 10:14:54.516 [http-nio-8080-exec-6] [DEBUG] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping {AbstractHandlerMethodMapping.java:297} - Looking up handler method for path /order/ExportAll
2022-08-05 10:14:54.533 [http-nio-8080-exec-6] [DEBUG] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping {AbstractHandlerMethodMapping.java:302} - Returning handler method [public org.springframework.web.servlet.ModelAndView com.xiangshi.wzc.basecore.web.controller.BaseControllerImpl.viewOne(java.lang.Long)]
2022-08-05 10:14:54.533 [http-nio-8080-exec-6] [DEBUG] org.springframework.beans.factory.support.DefaultListableBeanFactory {AbstractBeanFactory.java:248} - Returning cached instance of singleton bean 'orderController'
2022-08-05 10:14:54.533 [http-nio-8080-exec-6] [DEBUG] org.springframework.web.servlet.DispatcherServlet {DispatcherServlet.java:931} - Last-Modified value for [/order/ExportAll] is: -1
2022-08-05 10:14:54.538 [http-nio-8080-exec-6] [DEBUG] org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver {AbstractHandlerExceptionResolver.java:134} - Resolving exception from handler [public org.springframework.web.servlet.ModelAndView com.xiangshi.wzc.basecore.web.controller.BaseControllerImpl.viewOne(java.lang.Long)]: org.springframework.beans.TypeMismatchException: Failed to convert value of type [java.lang.String] to required type [java.lang.Long]; nested exception is java.lang.NumberFormatException: For input string: "ExportAll"
2022-08-05 10:14:54.538 [http-nio-8080-exec-6] [DEBUG] org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver {AbstractHandlerExceptionResolver.java:134} - Resolving exception from handler [public org.springframework.web.servlet.ModelAndView com.xiangshi.wzc.basecore.web.controller.BaseControllerImpl.viewOne(java.lang.Long)]: org.springframework.beans.TypeMismatchException: Failed to convert value of type [java.lang.String] to required type [java.lang.Long]; nested exception is java.lang.NumberFormatException: For input string: "ExportAll"
2022-08-05 10:14:54.539 [http-nio-8080-exec-6] [DEBUG] org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver {AbstractHandlerExceptionResolver.java:134} - Resolving exception from handler [public org.springframework.web.servlet.ModelAndView com.xiangshi.wzc.basecore.web.controller.BaseControllerImpl.viewOne(java.lang.Long)]: org.springframework.beans.TypeMismatchException: Failed to convert value of type [java.lang.String] to required type [java.lang.Long]; nested exception is java.lang.NumberFormatException: For input string: "ExportAll"
2022-08-05 10:14:54.539 [http-nio-8080-exec-6] [DEBUG] org.springframework.web.servlet.DispatcherServlet {DispatcherServlet.java:1018} - Null ModelAndView returned to DispatcherServlet with name 'spring-servlet': assuming HandlerAdapter completed request handling
2022-08-05 10:14:54.539 [http-nio-8080-exec-6] [DEBUG] org.springframework.web.servlet.DispatcherServlet {FrameworkServlet.java:996} - Successfully completed request
2022-08-05 10:14:54.541 [http-nio-8080-exec-6] [DEBUG] org.springframework.beans.factory.support.DefaultListableBeanFactory {AbstractBeanFactory.java:248} - Returning cached instance of singleton bean 'sqlSessionFactory'
2022-08-05 10:14:59.673 [http-nio-8080-exec-8] [DEBUG] org.springframework.web.servlet.DispatcherServlet {DispatcherServlet.java:845} - DispatcherServlet with name 'spring-servlet' processing GET request for [/index]
2022-08-05 10:14:59.676 [http-nio-8080-exec-8] [DEBUG] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping {AbstractHandlerMethodMapping.java:297} - Looking up handler method for path /index
2022-08-05 10:14:59.676 [http-nio-8080-exec-8] [DEBUG] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping {AbstractHandlerMethodMapping.java:302} - Returning handler method [public java.lang.String com.xiangshi.wzc.devloper.pc.modules.index.IndexController.index()]
2022-08-05 10:14:59.676 [http-nio-8080-exec-8] [DEBUG] org.springframework.beans.factory.support.DefaultListableBeanFactory {AbstractBeanFactory.java:248} - Returning cached instance of singleton bean 'indexController'
2022-08-05 10:14:59.677 [http-nio-8080-exec-8] [DEBUG] org.springframework.web.servlet.DispatcherServlet {DispatcherServlet.java:931} - Last-Modified value for [/index] is: -1
2022-08-05 10:14:59.677 [http-nio-8080-exec-8] [DEBUG] org.springframework.web.servlet.DispatcherServlet {DispatcherServlet.java:1225} - Rendering view [org.springframework.web.servlet.view.JstlView: name 'index'; URL [/WEB-INF/views/index.jsp]] in DispatcherServlet with name 'spring-servlet'
2022-08-05 10:14:59.679 [http-nio-8080-exec-8] [DEBUG] org.springframework.web.servlet.view.JstlView {InternalResourceView.java:166} - Forwarding to resource [/WEB-INF/views/index.jsp] in InternalResourceView 'index'
2022-08-05 10:14:59.840 [http-nio-8080-exec-8] [DEBUG] org.springframework.web.servlet.DispatcherServlet {FrameworkServlet.java:996} - Successfully completed request
2022-08-05 10:14:59.843 [http-nio-8080-exec-8] [DEBUG] org.springframework.beans.factory.support.DefaultListableBeanFactory {AbstractBeanFactory.java:248} - Returning cached instance of singleton bean 'sqlSessionFactory'
如果你是想这个参数必须传空的情况下。最简单的解决办法为将参数类型变成integer,代码中加校验如果为空怎么处理,不为空怎么处理。
不加校验会报错
当处理 Spring Framework 中的请求参数时,经常会涉及到使用 @RequestParam
注解来获取参数值并将其绑定到方法的参数上。然而,在设置参数类型、默认值以及处理参数为空的情况时,有一些关键点需要注意。
@RequestParam
注解简介在 Spring Framework 中,@RequestParam
注解是一个常用的注解,用于从请求中获取参数的值。它可以应用于方法的参数上,将请求参数与方法参数进行绑定。在实际应用中,我们可能会遇到一些情况,需要对参数类型、默认值以及处理参数为空的情况进行特定的设置。
在使用 @RequestParam
注解时,参数类型和默认值的设置是十分重要的。考虑以下情况:
@RequestParam(name = "userId", required = false, defaultValue = " ") userId: Int
这里的错误在于将空格作为整数类型参数 userId
的默认值。实际上,defaultValue
应该设置为一个合法的整数值,以确保参数未提供时能够使用有效的默认值。
@RequestParam(name = "userId", required = false, defaultValue = "0") userId: Int
在这个正确的示例中,defaultValue
被设置为 "0"
,这是一个合法的整数值。这样,当参数未提供时,userId
将使用默认值 0。
对于需要处理参数为空的情况,您提出了一种解决方案,即将参数类型从 Int
更改为 Integer
,并在代码中添加相应的校验。这是一个明智的做法,因为 Integer
类型可以接受 null
值,从而更好地处理参数值为空的情况。
例如,您可以使用如下方式来处理参数为空的情况:
@RequestMapping("/process")
public String processRequest(@RequestParam(name = "userId", required = false) userId: Integer) {
if (userId == null) {
// 处理参数为空的情况
} else {
// 处理参数不为空的情况
}
// ...
}
在这个例子中,我们使用了 Integer
类型的 userId
参数,并通过判断是否为 null
来处理参数为空和非空的情况。
处理 Spring Framework 中的请求参数时,正确设置参数类型、默认值,以及处理参数为空的情况,都是至关重要的。通过正确使用 @RequestParam
注解,您可以更好地控制参数的传递和处理,从而增强您的应用程序的可靠性和灵活性。同时,根据实际需要,您可以选择将参数类型设置为 Integer
,以便更好地处理参数值为空的情况。这些技巧将有助于您在 Spring Framework 中有效地处理请求参数,提升代码质量和可维护性。
希望本篇博客对您理解和处理 Spring Framework 中的请求参数问题有所帮助。如果您有任何疑问或需要进一步的解释,请随时提问。