Spring RenderMapping на основе состояния, сохраненного в сеансе - PullRequest
0 голосов
/ 11 января 2012

У меня есть контроллер с двумя методами рендеринга, которые принимают разные аргументы:

class MyController
{
  @RenderMapping
  public void render(@ModelAttribute ClassX param)
  {
    // do some stuff
  }
  @RenderMapping
  public void render2(@ModelAttribute ClassY param)
  {
    // do different stuff
  }
}

Конечно, в приведенном выше примере отсутствует некоторая спецификация для весны, чтобы знать, какой из методов рендеринга вызывать.Мне нужно решить это на основе состояния, сохраненного в текущем сеансе.Я не могу указать это просто как простую аннотацию, не так ли?

Альтернативная идея выглядит примерно так:

class MyController2
{
  @RenderMapping
  public void render(RenderRequest request)
  {
    if (request.getPortletSession().getAttribute(...) ...)
    {
      ClassX param = retrieveObjectFromRequest(ClassX.class, request);
      // do some stuff
    }
    else
    {
      ClassY param = retrieveObjectFromRequest(ClassY.class, request);
      // do different stuff
    }
  }
}

Но в этом случае ... Как реализоватьretrieveObjectFromRequest метод?

1 Ответ

0 голосов
/ 11 января 2012

ОК, после прокрутки исходного кода Spring некоторое время я нашел способ выполнить часть retrieveObjectFromRequest:

class MyController
{
  @RenderMapping
  public void render(WebRequest webRequest)
  {
    ClassX param = new ClassX();
    new WebRequestDataBinder(param).bind(webRequest); // Fills param's properties.
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...