0

我有一个用 spring mvc 编写的用于 servlet 环境的控制器。现在我想转换控制器以使其适用于 portlet 环境。我正在为 portlet 使用 spring mvc。

下面是方法片段,

@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
public String findOwner(@PathVariable String ownerId, Model model) {
  Owner owner = ownerService.findOwner(ownerId);
  model.addAttribute("owner", owner);
  return "displayOwner";
}

谁能指导我如何将这个为servlet环境编写的控制器方法转换为portlet环境?我想将 RequestMapping 更改为 RenderMapping

4

1 回答 1

0

这可能是延迟回复,但如果你回到这里,那么你可以推断出一些东西(或者你可能已经推断出)。

@PathVariable在 Spring Portlet 环境中无效,因为您无法将Action,RenderResourceURL 映射到Controllers 方法,这与RESTurls不同

如果您想将 Servlet 控制器转换为 Portlet 控制器,那么您的代码应如下所示

@RequestMapping(params="anyIdentifier")
public String findOwner(@RequestParam String ownerId, Model model) {
  Owner owner = ownerService.findOwner(ownerId);
  model.addAttribute("owner", owner);
  return "displayOwner";
}

@RequestMapping在 Portlet 环境中仍然适用,但是您可以根据 Portlet url 使用一些特定的注释。

  • @ActionMapping- 对于 Action Urls 和 return 应该是无效的。View虽然您返回 a或ModelAndView由于 Portlet 的 2 步执行,但它没有效果
  • @RenderMapping- 对于 Render Urls 和 return 可以是 aViewModelAndView. 这始终遵循@ActionMapping

  • @ResourceMapping- 对于 Resource Urls 和 return 可以是Void,ViewModelAndView- 主要用于 ajax 调用。

于 2014-01-24T13:09:07.000 回答