You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Javalin 4 调用Validator.check()出现编译错误的正确写法

问题原因
  • 核心问题是命名参数不匹配:Javalin 4 中Validator.check()的字符串类型重载第二个参数命名为error,而非你代码中使用的errorMessage。Kotlin 要求命名参数必须和方法定义的参数名完全一致,因此编译器无法匹配到对应的重载方法。
  • 该参数名是 Javalin 3 到 4 的不兼容变更之一,你大概率是沿用了 Javalin 3 的参数命名习惯才触发了这个报错。
正确写法

两种可行写法任选即可:

  1. 省略命名参数直接传参
val messageId = ctx.pathParamAsClass<String>("messageId")
    .check({ it.trim().matches(Uuid.REGEX) }, "message id must be a UUID")
    .get()
    .trim()
  1. 修正命名参数为error
val messageId = ctx.pathParamAsClass<String>("messageId")
    .check(check = { it.trim().matches(Uuid.REGEX) }, error = "message id must be a UUID")
    .get()
    .trim()

内容的提问来源于stack exchange,提问作者ivan.ukr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:36:03