目前,我正在尝试使用 kotlin 数据类在带有 @RestController 的类注释中减少 @RequestMapping 注释方法的参数数量。此外,我不想在包含相同路径变量的多个 @RequestMapping 注释方法上重复自己。
下面的代码显示了我的方法/multiple/ABC/true/123
按预期工作但/single/ABC/true/123
抱怨缺少默认构造函数。
data class Params(@PathVariable("param1") val param1: String,
@PathVariable("param2") val param2: Boolean,
@PathVariable("param3") val param3: Int)
@RestController
class TestController {
@RequestMapping("/single/{param1}/{param2}/{param3}")
fun single(params: Params) {
println(listOf(params.param1, params.param2, params.param3))
}
@RequestMapping("/multiple/{param1}/{param2}/{param3}")
fun multiple(@PathVariable("param1") param1: String,
@PathVariable("param2") param2: Boolean,
@PathVariable("param3") param3: Int) {
println(listOf(param1, param2, param3))
}
}
当我改用以下数据类定义时,我得到了一个结果,但是实例不再是不可变的,并且可能有一些字段没有更新。
data class Params(@PathVariable("param1") var param1: String = "",
@PathVariable("param2") var param2: Boolean = false,
@PathVariable("param3") var param3: Int = 0)
谁能帮我完成第一个数据类定义?