首先,我使用Spring WebMVC(5.0.4到Spring Boot 2.0)与Kotlin(但这个问题与Kotlin无关)。
我试图将一些常见功能抽象到一个抽象基类中,我可以在几个控制器中重用它。例如,我的基类中有一个getAll
方法,它使用@GetMapping
标记为处理程序方法。现在我想从这个getAll
方法中调用这个类中的其他一些(抽象)方法。然而,在那些抽象方法中,正常的参数绑定机制不可用(例如,我不能使用@RequestParam
)。有没有办法解决这个问题?如何在那些抽象(非处理程序)方法中访问请求参数?
我知道我可以@RequestParam
使用MultiValueMap<String, String>
来获取getAll
方法中的所有参数,但之后我没有任何参数转换可用。
一些代码:
abstract class MyBaseController {
@GetMapping fun getAll(@RequestParam allParameters: MultiValueMap<String, String>) {
// perform some logic
doStuff()
}
abstract fun doStuff()
}
class MyController : MyBaseController() {
override fun doStuff() {
// how to obtain e.g. request parameter "ids" as a List<UUID> here?
}
}