我有一个用spring vvc编写的控制器用于servlet环境。现在我想转换控制器使其适用于portlet环境。我正在使用spring mvc for portlet。
以下是方法片段
@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
答案 0 :(得分:0)
这可能是延迟回复,但如果你回到这里,那么你可以推断一些东西(或者你可能已经推断过)。
@PathVariable
在Spring Portlet环境中无效,因为您无法将Action
,Render
和Resource
网址映射到Controller
的方法,而不是{ {1}}网址
如果要将Servlet控制器转换为Portlet控制器,则代码应如下所示
REST
@RequestMapping(params="anyIdentifier")
public String findOwner(@RequestParam String ownerId, Model model) {
Owner owner = ownerService.findOwner(ownerId);
model.addAttribute("owner", owner);
return "displayOwner";
}
在Portlet环境中仍然有用,但是根据portlet URL可以使用一些特定的注释。
@RequestMapping
- 对于动作网址并且返回应该无效。尽管由于Portlet的2步执行而返回@ActionMapping
或View
,但它没有任何效果 ModelAndView
- 对于渲染网址,返回可以是@RenderMapping
或View
。这始终遵循ModelAndView
@ActionMapping
- 对于资源网址,返回可以是@ResourceMapping
,Void
或View
- 主要用于ajax调用。