当前位置: 首页 > 知识库问答 >
问题:

当用户传递空值时如何捕捉@RequestParams

弓智明
2023-03-14

我正在尝试用kotlin做一个Spring MVC RestController,但是我很难用LocalDatetime使用RequestParams。

@GetMapping
fun getParams(@RequestParam(required = true) endDate: LocalDateTime)

如果我不指定参数< code>localhost:8080/,它会给出一个可在ControllerAdvice中捕获的错误,但如果我指定一个空值< code > localhost:8080/end date = ,它会给出< code > Java . lang . illegalargumentexception:指定为非null的参数为null:method net . agroop . device API . controllers . device controller . getairparams,参数endDate

我发现无法在Controlller建议中捕获该错误,因为我认为这是一个kotlin错误。

我尝试使用其他类型,如日期,它也给出了错误。如果我使用字符串,它的工作原理是字符串可以是空的。另外,如果我指定 LocalDateTime?作为可空的,它可以工作,但随后我必须在每个请求映射中的控制器中捕获错误,而不是在控制器建议中。

共有2个答案

汝彭薄
2023-03-14
匿名用户

要摆脱异常,只需将模型的属性设为空,即endDate: LocalDateTime?

@GetMapping
fun getParams(@RequestParam(required = true) endDate: LocalDateTime?)

要验证空值,您可以使用Hibernate Validator在<code>数据类@field:NotEmpty。

GL

来源

锺功
2023-03-14

我自己也想通了。只需要有一个转换器

@Component
class LocalDateConverter : Converter<String, LocalDateTime> {
    override fun convert(source: String): LocalDateTime = LocalDateTime.parse(source, DateTimeFormatter.ISO_DATE_TIME)
}

现在我可以使用以下命令处理异常:

@ExceptionHandler(MethodArgumentTypeMismatchException::class)
fun handleMethodArgumentTypeMismatch(ex: MethodArgumentTypeMismatchException, request: WebRequest) =

 类似资料:
  • 我有一个有4个参数的类。还有一个测试,将空对象放入。有可能捕捉到这个空值吗?我的意思是,有些测试将IlligalArgumentException放在了一起。所以,如果我尝试用try-catch块捕捉这个空对象,对于整个costructor块,这个可以工作,但其他测试会崩溃,反之亦然。

  • 经过几天的搜索,阅读了几乎所有与之相关的内容,我终于在这里发布了我的问题,因为我找不到解决我的具体问题的方法。 我希望我的REST WebServices返回已抛出的原始异常,或者至少返回正确的StackTrace。为了测试这个,我使用JUnit集成测试和Wildfly 13作为应用程序服务器。经过研究,我找到了2个可能的解决方案。 1.Using异常映射 虽然这个神奇的东西捕获了我的所有异常并允

  • 我需要捕捉用户挂断的事实,但我不知道如何。 有什么建议吗?

  • 在节点中。在js服务器上,捕获SIGTERM和捕获SIGINT有什么区别吗? 我认为进程不应该能够防止SIGINT关闭? 我是否能够捕获两个信号并阻止退出?我的实验表明答案是肯定的,但从我所读到的内容来看,SIGINT总是假设关闭一个进程。 或者我把SIGINT和SIGKILL混淆了?也许SIGKILL是我无法恢复的信号? 捕捉这些信号当然可以让我优雅地关机: 我想我把SIGINT和SIGKILL

  • 问题内容: 我有一个很大的数学表达式,必须动态创建。例如,一旦我已经解析了“东西”,结果就会像一个字符串:。 因此,为了计算该表达式的结果,我使用的是函数…… 这里的问题是,有时我会收到错误消息,说被零除,并且我不知道如何捕获该异常。我已经尝试过类似的事情: 要么: 但这行不通。因此,如何避免被零除的应用程序崩溃? 编辑: 首先,我想澄清一下:表达式是动态构建的,因此如果分母为零,我不能仅仅求值。

  • 问题内容: 据我所知,netty通过重写方法exceptionCaught()处理异常。但是我想要的是一个可以处理所有异常的处理程序。因此,管道应类似于: InboundExceptionHandler- inboundHandler1-inboundHandler2-outboundHandler1-outboundHandler2-OutboundExceptionHandler 这意味着我应