如何在Kotlin的Micronaut控制器中绑定参数?

如何在Kotlin的Micronaut控制器中绑定参数?,kotlin,binding,controller,micronaut,uritemplate,Kotlin,Binding,Controller,Micronaut,Uritemplate,参见要点中的代码: 这是一个小样本项目,我试图与科特林的Micronaut合作 不幸的是,我唯一能做的就是代码中的参数绑定。它们需要模板中的模式,并以字符串形式键入。不过,我希望能够在评论中这样做。所以模板中不会有模式,也不会有数字和列表等类型(或者数组也可以) 可以这样做吗?为什么对我不起作用?第一个参数,您只需键入一个数字即可。但是,第二个参数必须作为字符串拉入,因为Micronaut不可能知道URI的部分应该如何转换为列表 /repeat/5/1,2,3,4/repeat/6/1 | 2

参见要点中的代码:

这是一个小样本项目,我试图与科特林的Micronaut合作

不幸的是,我唯一能做的就是代码中的参数绑定。它们需要模板中的模式,并以字符串形式键入。不过,我希望能够在评论中这样做。所以模板中不会有模式,也不会有数字和列表等类型(或者数组也可以)


可以这样做吗?为什么对我不起作用?

第一个参数,您只需键入一个数字即可。但是,第二个参数必须作为字符串拉入,因为Micronaut不可能知道URI的部分应该如何转换为列表


/repeat/5/1,2,3,4
<代码>/repeat/6/1 | 2 | 3
/repeat/7/[1,2,3]

我在某处发现模式“{+stack}”与包含斜杠的字符串匹配。这不是我想要的,但同时也很有帮助。这也不允许将此参数设置为可选参数。哦,好吧-(

您链接的要点是一堆javascript非sense,我注意到了这一点,并修复了.Thanx。这是有意义的。但我认为它会反转模板的逻辑。URI模板会将集合转换为URL路径,因此,如果通过查找集合类型的参数,它会尝试将多个元素解析到其中,这是有意义的。例如,如果图版看起来像“{/name*}”集合将被转换为“/value1/value2/value3”。为什么不将其转换回?@C.A.B。因为我们无法使假设更改(扩展)UriTemplate语法包含模式匹配。我相信RFC只在占位符中的冒号后调用数字字段长度。我建议的不是假设,而是逻辑IMHO用法。匹配可能更复杂一些,但逻辑是在编译期间实现的。例如路径“/repeat/5/1,2,3,4”将匹配模式“/repeat”/{value}{/stack}“而“/repeat/5/1/2/3/4”将匹配--“/repeat/{value}{/stack*}”。我不知道“|”分隔列表(不知道它将传递到什么),但您的最后一个示例应该匹配我的模式,而不带“*”
{/+stack}
将使其成为可选的。我尝试了这个方法,尽管它与URI模板RFC非常相似。但是它不起作用。我得到了错误:“路由声明了一个名为[+stack]的URI变量,但没有相应的方法参数”。根据URI模板的概念,这是有意义的。它应该是
{/stack+}
这一点都不像URI模板。Micronaut URI模板和相应的RFC之间是否存在文档列表差异?一年前有过,但您没有提供这个文档王。我认为它非常有用。