Spring MVC请求/命令对象

时间:2013-01-14 08:29:48

标签: spring spring-mvc url-routing

有没有一种方便的方法可以改变这样的事情..

@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?

3 个答案:

答案 0 :(得分:0)

检查docs后,它似乎不支持开箱即用。您可以尝试创建自己的HandlerMethodArgumentResolver,为您提供此功能。您可能会遇到一些问题,因为您需要在实现和HandlerMethodArgumentResolverComposite实例之间使用循环引用。不过我觉得它应该是可能的。

答案 1 :(得分:0)

是的spring支持这种开箱即用,它通常被称为bean绑定。 基本上,您使用具有相同名称的参数创建对象, 因此,如果你有一个参数“q”,你的对象应该包含一个私有字符串q,同时存在getter和setter。它也不希望使用任何构造函数。

Spring将填充它在你对象中的参数并通过方法的参数传递它。

答案 2 :(得分:0)

您可以创建自己的对象,例如NiceEncapsulatingRequetObject,它的属性应该是String oh, Integer my等。如果您发送的请求具有确切的名称,它将起作用