我正在尝试采用从 Javalin 3 到 Javalin 4 的现有参数验证代码。它使用 Javalin 的Validator
类。这是我得到的代码(重写):
val messageId = ctx.pathParamAsClass<String>("messageId")
.check(check = { it.trim().matches(Uuid.REGEX) }, errorMessage = "message id must be a UUID")
.get()
.trim()
我收到了check()
调用的编译错误:
e:
/home/ivan/.../SourceFile.kt: (53, 6): None of the following functions can be called with the arguments
supplied:
public final fun check(check: Check<String> /* = (String) -> Boolean */, error: ValidationError<String>):
Validator<String> defined in io.javalin.core.validation.Validator
public final fun check(check: Check<String> /* = (String) -> Boolean */, error: String): Validator<String> defined in
io.javalin.core.validation.Validator
我不明白为什么会出现错误。我想我应该匹配第二个重载的check()
. 如何正确书写?
注意:我已阅读Javalin 3 到 4 迁移指南,其中给出了如下示例:
ctx.queryParamAsClass<Int>("age")
.check({ it >= 18 }, ValidationError("AGE_TOO_LOW", args = mapOf("minAge" to 18)))
.get()
我似乎遵循,除了我将错误消息作为字符串给出,但有匹配的重载。那么这里有什么问题呢?