3

現在、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)

最初のデータクラス定義を機能させるのを手伝ってくれる人はいますか?

4

1 に答える 1