Spring MVC DefaultRequestToViewNameTranslator проблема с заглавными буквами - PullRequest
2 голосов
/ 11 мая 2009

Я опробую всю концепцию "соглашение поверх конфигурации" с Spring MVC. Spring имеет все виды инструментов, чтобы помочь с этим, и я пробую некоторые из них. Однако я столкнулся с проблемой, что конфигурация нашей команды не совсем соответствует тому, что хочет Spring.

Проблема в том, что мы берем URL-адреса типа "http://ourSite/SomePage.do",", пропускаем их через "SomePageController" и отображаем их с помощью "somePage.jsp". Обратите внимание, что SomePage.do начинается с заглавной буквы, а somePage.jsp Это не так. Похоже, что SpringRequestToViewNameTranslator хранит заглавную букву, а ViewResolvers не может понять, как сделать этот первый символ строчным.

Есть ли способ настроить NameTranslator или ViewResolver, чтобы сделать эту первую букву строчной?

1 Ответ

3 голосов
/ 12 мая 2009

Javadocs для DispatcherServlet указывают, как определяется 'viewNameTranslator':

Если имя представления или представления не предоставлено пользователем, то сконфигурированный RequestToViewNameTranslator преобразует текущий запрос в имя представления. Соответствующее имя бина "viewNameTranslator"; по умолчанию DefaultRequestToViewNameTranslator.

Так что, если вы хотите немного отличного поведения "просмотра именного переводчика", вам придется предоставить свой собственный экземпляр. Вы, вероятно, легко можете просто создать подкласс DefaultRequestToViewNameTranslator, чтобы добавить логику в случае имени файла.

Но, честно говоря, я бы действительно предложил, чтобы ваши контроллеры возвращали именованные представления и не должны полагаться на то, что имя представления совпадает с URI. Это позволяет использовать одно и то же представление для нескольких URL-адресов / контроллеров и позволяет по-настоящему абстрагировать понятие «представление» от URL-адреса.

(Если честно, я использовал Spring MVC около 5 месяцев в довольно большом приложении и даже не знал, что этот класс DefaultRequestToViewNameTranslator находится в фреймворке или что viewNameTranslator - это то, ДиспетерСервлет будет использовать!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...