有没有一种方便的方法可以改变这样的事情..
@RequestMapping("/some/action/{q}/...")
public void doSomething(@PathVariable("q"), oh, my, god, a, billion, annotated parameters) { .. }
这样的事情..
@RequestMapping("/some/action/{q}/...")
public void doSomething(NiceEncapsulatingRequetObject request) { .. }
使用Spring MVC?
答案 0 :(得分:0)
检查docs后,它似乎不支持开箱即用。您可以尝试创建自己的HandlerMethodArgumentResolver,为您提供此功能。您可能会遇到一些问题,因为您需要在实现和HandlerMethodArgumentResolverComposite
实例之间使用循环引用。不过我觉得它应该是可能的。
答案 1 :(得分:0)
是的spring支持这种开箱即用,它通常被称为bean绑定。 基本上,您使用具有相同名称的参数创建对象, 因此,如果你有一个参数“q”,你的对象应该包含一个私有字符串q,同时存在getter和setter。它也不希望使用任何构造函数。
Spring将填充它在你对象中的参数并通过方法的参数传递它。
答案 2 :(得分:0)
您可以创建自己的对象,例如NiceEncapsulatingRequetObject
,它的属性应该是String oh, Integer my
等。如果您发送的请求具有确切的名称,它将起作用