Отобразить другой параметр запроса основания плитки (Springframework & tile) - PullRequest
0 голосов
/ 09 апреля 2010

Мне нужно изменить существующее приложение, чтобы отобразить другое представление в зависимости от параметра запроса. Это приложение использует плитки. Я никогда не использовал плитки прежде, и мне нужно немного намека, как это сделать.

Плитка определяется следующим образом:

<bean id="viewResolver"class="org.springframework.web.servlet.view.UrlBasedViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" /></bean>

Допустим, у меня есть welcome.tile , если в запросе есть какой-либо параметр, например. id = xyz и плитка xyz.welcome.tile существует. Я хотел бы сделать это, если его нет, я хотел бы сделать по умолчанию Мой контроллер возвращает welcome.tile в качестве представления, но я не хочу добавлять код в контроллеры, я хотел бы сделать это как можно проще.

Я думал как-то перехватить разрешение представления, чтобы он проверил параметр по запросу, а затем проверил, существует ли данный тайл с префиксом из параметра, если он существует, он будет использоваться. Но я не уверен, с чего начать.

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

Заранее спасибо Konrad

1 Ответ

1 голос
/ 16 сентября 2010

Я думаю, что вы можете достичь этого расширения UrlBasedViewResolver с помощью версии, которая читает параметр запроса по вашему желанию и создает имя представления с этой информацией. Зная, что интерфейс ViewResolver не предоставляет экземпляр HttpRequest, вы можете получить его, используя org.springframework.web.util.RequestHolder.currentRequest() статический метод.

Таким образом, если вы запрашиваете (например) /mvc/dailyReport/criticalStuff, viewName может быть dailyReport.criticalStuff

и если вы запрашиваете /mvc/dailyReport/criticalStuff?printable, viewName может быть разрешено как dailyReport.criticalStuff.printable, где это версия для печати dailyReport.criticalStuff view.

Надеюсь, это поможет

...