0

我有这个 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 ?

4

2 回答 2

0

这是 Spring MVC 框架的一部分。默认规则在 Spring 文档的“定义 @RequestMapping 处理程序方法”部分中进行了说明(3.2.x 的链接

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

于 2013-10-16T12:50:06.063 回答
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

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

于 2013-10-17T07:09:02.707 回答