В последнее время я снова и снова сталкиваюсь с одной и той же проблемой с моими приложениями Spring MVC, и я пытаюсь найти долгосрочное решение.
Проблема в том, что в стандартномКонтроллер Spring 3, вы добавляете объекты модели, вы указываете имя представления (встроенное или из какого-то введенного поля) и возвращаете.Проблема, с которой я столкнулся, заключается в том, что если у вас есть запрос, который возвращает страницу с человеком и его питомцами, у вас есть что-то вроде (не компилируется, псевдо):
@RequestMapping( value="personOverview", method="GET" )
public String getPersonOverview(model) {
model.add(personRepo.getPerson( theName ));
model.add(petRepo.getPetsForPerson( thePerson ));
return "personOverviewViewName";
}
Теперь, на ваш взглядВы сможете предоставить всю эту информацию.Однако проблема возникает, когда кто-то обновляет «домашние животные» для этого человека, и вы просто хотите перерисовать ту часть страницы, которая показывает домашних животных.
Мало того, что вам нужно переписать логику рендерингаво фрагменте JSP или в JavaScript, но вам также нужно будет продублировать код контроллера для каждой части метода getPersonOverview.Если бы вы разбили методы контроллера на более мелкие куски, то вы не сможете отобразить полную страницу, но вам придется визуализировать каждый кусочек с отдельным запросом.
В обычном шаблоне ModelViewControllerРешением этой проблемы является то, что представление имеет доступ к модели, но в Spring MVC модель находится на Java и находится за уровнем запросов, поэтому вам необходимо создать обработчики запросов для каждого объекта модели.
Я знаю этовопрос может показаться немного абстрактным, но я ищу шаблоны или принципы, которые можно использовать, чтобы позволить мне создавать полные страницы со многими объектами модели, а также иметь возможность обновлять части страницы с помощью ajax без дублирования.