Spring线方法参数如何?

时间:2013-10-16 12:13:55

标签: spring

我有这个Spring方法,它只是将资源映射到.jsp:

@ResourceMapping(value = "display")
public String displayResult() {

  return "mypage"

}

如果我将方法更新为:

@ResourceMapping(value = "display")
public String displayResult(javax.portlet.ResourceResponse rr) {

  rr.setContentType("text/html;charset=UTF-8");    
  return "mypage"

}

变量rr是初始化的,但是在后台发生了什么Spring“魔法”来初始化对象javax.portlet.ResourceResponse?

2 个答案:

答案 0 :(得分:0)

这是Spring MVC框架的一部分。 Spring文档(Link for 3.2.x)的“定义@RequestMapping处理程序方法”一节中解释了默认规则

我的猜测是你的类路径上有一个帮助库,它扩展了注释@ResourceMapping和类型ResourceResponse

的默认值

答案 1 :(得分:0)

正如Aaron所指出的那样,在他提供的链接中解释了解析处理程序方法的参数的默认规则。

但是,使得处理程序方法接受其他类型的参数不是通过扩展@ResourceMapping批注来实现的,而是通过在Spring 3.1之前实现新的WebArgumentResolver和从3.1实现HandlerMethodArgumentResolver。见http://docs.spring.io/spring/docs/3.1.x/javadoc-api/org/springframework/web/method/support/HandlerMethodArgumentResolver.html

在你的情况下,javax.portlet.ResourceResponse可能是Spring web mvc portlet框架直接支持的,虽然我找不到这方面的文档。在IDE中,您可以查看实现HandlerMethodArgumentResolver(或WebArgumentResolver)的所有类