【问题标题】:Convert spring mvc controller method for servlet to portlet将servlet的spring mvc控制器方法转换为portlet
【发布时间】:2013-11-16 00:59:43
【问题描述】:

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

下面是方法sn-p,

@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

【问题讨论】:

    标签: spring-mvc spring-portlet-mvc


    【解决方案1】:

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

    @PathVariable 在 Spring Portlet 环境中无效,因为您无法将 ActionRenderResource URL 映射到 Controllers 方法,这与 REST url 不同

    如果您想将 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 应该是无效的。尽管您返回 ViewModelAndView 没有任何效果,因为 Portlet 的 2 步执行
    • @RenderMapping - 用于渲染 URL,返回可以是 ViewModelAndView。这始终遵循@ActionMapping

    • @ResourceMapping - 用于资源 URL,返回可以是 VoidViewModelAndView - 主要用于 ajax 调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 2011-11-16
      • 2012-04-16
      • 1970-01-01
      • 2016-03-06
      相关资源
      最近更新 更多