Жесткое кодирование имен представлений в контроллере альтернативы? - PullRequest
2 голосов
/ 28 января 2010

Я использую Java EE со средой Spring. Я настраивал тестовый проект (пока все работает), и в настоящее время у меня есть следующая строка в контроллере, чтобы просто загрузить представление под названием index.jsp:

return new ModelAndView("index");

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

Ответы [ 3 ]

1 голос
/ 28 января 2010

Шаблон Spring на работе здесь - ViewResolver.По сути, ваш контроллер возвращает символическое имя представления, которое вы хотите переслать, и Spring преобразует это символическое имя в фактическое представление.Если вы не настроите его иначе, он просто наклеит .jsp в конце и будет использовать это - простейший случай.

Однако, это может оказаться настолько сложным, насколько вы захотите, в том числе, какВы предлагаете использовать файл конфигурации для сопоставления имен с реальными JSP.Как всегда в Spring, есть дюжина различных способов сделать это - см. эту часть документации .

0 голосов
/ 29 января 2010

В моем последнем веб-приложении Spring 3.0 я использовал комбинацию:

  1. Поля константных строк в моем классе контроллера для имен представлений

  2. Файлы свойств со значениями, которые переопределяют значения полей, которые вставляются Spring через конфигурацию «context: property-override»:

<context:property-override location="classpath:viewName.properties"/>

Чтобы последний работал, вы должны либо перечислить все контроллеры как bean-компоненты в XML-файле конфигурации диспетчера, либо аннотировать ваш контроллер с помощью аннотации @Component("fooController") (редактировать: не уверен, будет ли работать @Controller("fooController") вместо этого?) а затем сослаться на поля в файле свойств следующим образом: fooController.someView=someJsp.

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

0 голосов
/ 28 января 2010

Если вы используете SimpleFormControllers, вы можете установить formView и successView. FormView возвращается по запросу GET, а successView возвращается по умолчанию, если все успешно выполняется в запросе PUT.

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