Ваш вопрос мне кажется действительным.Самый простой ответ, который я могу придумать, состоит в том, чтобы разделить представления и использовать значение предпочтения сайта в имени папки:
/views/normal/home.jsp
/views/mobile/home.jsp
(Префикс решателя представления должен быть "/ views /", конечно).
Теперь в контроллере вы можете иметь:
return sitePreference.name().toLowerCase() + "/home";
Вы не можете использовать два отдельных распознавателя, так как контроллер не может решить, какой просмотрщик использовать, а только какой просмотр.
Что касается выбора резольвера, которым можно управлять только через свойство order, которое полностью выходит за рамки этого варианта использования.
Редактировать: я почувствовал запах кодаимея одинаковую логику, дублированную во всех методах контроллера.
Итак, чтобы сохранить эту логику в одном месте, попытайтесь использовать пользовательский HandlerInterceptor
, который добавит префикс к имени представления вpostHandle
метод.Вам нужно только получить текущий экземпляр SitePreference самостоятельно, основываясь на запросе, что должно быть совершенно возможно.