как организовать и реализовать структуру файлов JSP с помощью Spring - PullRequest
2 голосов
/ 19 декабря 2010

Я программист php, сейчас занимаюсь веб-проектом на Java, используя Spring Framework.Я пытаюсь организовать свои JSP-файлы так, как я бы организовал свои .tpl-файлы в php.

Так что, если бы это был php, я бы сделал это так:

  • index.tpl
    • включает в себя один из layout.tpls (ajax.tpl, mobile.tpl, general.tpl, упрощенный.tpl..)
      • включает в себя заголовок страницы
      • включает меню
      • включает фактическое содержание страницы
      • включает нижний колонтитул

тогда из php-контроллера я смогу сделать что-то вроде этого:

setLayout('general');
showTopMenu(false);
setContent('mySexyPage');

, кроме того, что я бы организовал свои вещи так, чтобы мои представления (файлы tpl) были организованы в папки, каждая из которых соответствуетодин контроллер.как это:

  • userManager
    • addUSer.tpl
    • editUser.tpl
    • editUserPermissions.tpl
  • articleManager
    • addArticle.tpl
    • editArticle.tpl

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

Теперь весной у меня есть контроллер с методами, обрабатывающими запросы, и каждый из методов возвращает то, каким должно быть представление.Я могу расширить все свои контроллеры из одного абстрактного класса, где я создам экземпляр ModelAndView со всеми установленными значениями по умолчанию, а затем методы обработки запросов добавят то, что им нужно, к экземпляру, который их папа уже создал, и вернут его.

Проблема с вышеуказанным подходом состоит в том, что я не заставляю кодировщика, который пишет контроллеры, использовать объект ModelAndView, который я создал, он по-прежнему возвращает все, что он хочет, из метода обработки, который он написал.

Есть ли какой-нибудь интерфейс, содержащий метод, подобный ModelAndView getModelAndView (), который будет реализовывать мой папский контроллер, поэтому Spring будет игнорировать любые возвращаемые методы-обработчики?

Или есть какой-нибудь лучший способ сделать это?

1 Ответ

1 голос
/ 31 декабря 2010

Выпуск шаблона содержимого

Мир Java имеет (на самом деле более одного, но я придерживаюсь того, который я знаю) решения этой проблемы, оно называется Tiles . ознакомьтесь с разделом 16 справочника Spring 3.0.5 .

ModelAndView Issue

Это более интересно. Во-первых, вы можете использовать модель без представления, и ваши контроллеры просто возвращают имя представления (, т.е. возвращает String). Я считаю, что вы хотите создать начальную модель где-нибудь. Затем пусть каждый метод контроллера контроллера принимает аргумент типа Model. Вот что я обычно делаю (без претензий, что это лучшая практика ):

Иметь метод Controller.get (модель модели), который устанавливает начальные значения.

@RequestMapping(method = RequestMethod.GET)
public String get(Model model)
{ ... set default stuff ... }
Каждый метод-обработчик является разновидностью этого:

@RequestMapping(value = "/search", method = RequestMethod.POST)
public String search(Model model, ... other stuff as needed ...)
{ ... set stuff in model ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...