Преобразование метода контроллера Spring MVC для сервлета в портлет

У меня есть один контроллер, написанный в Spring MVC для среды сервлета. Теперь я хочу преобразовать контроллер, чтобы он работал в среде портлета. Я использую 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";
}

Может ли кто-нибудь помочь мне, как я могу преобразовать этот метод контроллера, написанный для среды сервлета, в среду портлета? Я хочу изменить RequestMapping на RenderMapping


person Pritesh Shah    schedule 05.11.2013    source источник


Ответы (1)


Это может быть отложенный ответ, но если вы когда-нибудь вернетесь сюда, вы сможете что-то сделать (или, возможно, уже сделали).

@PathVariable недействителен в среде Spring Portlet, поскольку вы не можете сопоставлять URL-адреса Action, Render и Resource с методами Controllers, в отличие от URL-адресов REST.

Если вы хотите преобразовать контроллер сервлетов в контроллер портлетов, ваш код должен выглядеть следующим образом:

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

@RequestMapping по-прежнему работает в среде портлетов, но есть некоторые специальные аннотации, которые вы можете использовать на основе URL-адресов портлетов.

  • @ActionMapping — URL-адреса действий и возврат должны быть недействительными. Это не имеет никакого эффекта, хотя вы возвращаете View или ModelAndView из-за двухэтапного выполнения портлета.
  • @RenderMapping — для URL-адресов рендеринга и возврата может быть View или ModelAndView. Это всегда следует за @ActionMapping

  • @ResourceMapping — для URL-адресов ресурсов и возврата может быть Void, View или ModelAndView — в основном используется в вызовах ajax.

person Niranjan    schedule 24.01.2014