У меня есть приложение mvc (3.1.1) Spring, и я хочу определить условия, отличные от того, что доступно в RequestMapping. У меня есть несколько вещей, которые я хочу использовать.Добавление пользовательских RequestCondition в Spring mvc 3.1
Во-первых, это было бы неплохо, если бы я мог бы показать другую домашнюю страницу для различных типов пользователей:
@Controller
public class HomepageController {
@RequestMapping(value = "/")
@CustomCondition(roles = Guest.class)
public String guestHome() { /*...*/ }
@RequestMapping(value = "/")
@CustomCondition(roles = Admin.class)
public String adminHome() { /*...*/ }
}
Во-вторых, я хочу, чтобы приложение, чтобы функционировать как веб-сайт и как сервис REST (например, для мобильных приложений), поэтому я хочу, чтобы веб-сайт получил доступ к действиям html и json и позволил службе (другому субдомену) получить доступ только к действиям json (некий вид @CustomCondition(web = true)
, который соответствует только URL-адресам сайта)
Может ли это работа для любого из двух применений, которые я планирую?
я нашел очень мало документации о пользовательских условиях, но я нашел, что one exampleimplements custom conditions, которые могли бы быть то, что я хочу, но он использует @Configuration
класса вместо конфигурации XML, который я использую, и я не хочу переместите все мои весовые определения xml в класс @Configuration
.
Могу ли я определить customMethodCondition для RequestMappingHandlerMapping
в XML?
Я попытался подклассов RequestMappingHandlerMapping
и переопределить getCustomMethodCondition
, чтобы вернуть мой обычай RequestCondition
, но это не сработало - getMatchingCondition()
в моем состоянии не срабатывает.
Любая помощь была бы принята с благодарностью!
UPDATE
Я читал немного больше, и это выглядит как RequestMappingHandlerMapping
новый класс (с вер 3.1).
Что происходит в моем приложении является то, что @Configuration, который пытается переопределить и тем самым переопределить requestMappingHandlerMapping
боб на самом деле работает, но отображения URL (@RequestMapping
методы в @Controller
с), кажется, обрабатываются дважды, один раз в подклассе ExtendedRequestMappingHandlerMapping
и один раз оригиналом RequestMappingHandlerMapping
- сначала с пользовательским условием, а затем без него.
Нижняя линия - это мои пользовательские условия, которые просто игнорируются.
Это должен быть продвинутая моделью, но ИМО это должно быть довольно распространенным явлением ...
Комментариев кто?
Моя цель состояла в том, чтобы иметь программный доступ к механизму отображения, чтобы обеспечить соблюдение определенных ограничений. Указанные вами фильтры ограничены свойствами запроса и, следовательно, не решают мою проблему. – ori