Как визуализировать виды плиток в Spring MVC с помощью AJAX?
Я использую Spring 3 MVC для создания веб-приложения, которое имеет общий макет и" контент " div, который часто меняется / обновляется. Разметка контента находится в своей собственной плитке, и я хочу иметь возможность обновить эту плитку с помощью AJAX, не обновляя всю страницу. Я знаю, как запустить AJAX-запрос от клиента и обработать его в контроллере. Меня больше всего смущает конфигурация Spring (какие виды, решатели видов и т. д.). У кого-нибудь есть пример?
1 ответ:
В принципе, вы можете создать представление tiles, которое содержит только то содержимое, которое вы хотите, без HTML-скелета вокруг и визуализировать это представление/плитку в контроллере, который обрабатывает запрос ajax.
Предположим, у вас есть страница foo.JSP-страница. При вызовеhttp://example.com/myapp/foo
, целая html-страница с foo.jsp как содержание тела должно быть представлено. При вызовеhttp://example.com/myapp/ajax/foo
, только foo.jsp должен быть отправлен без всего скелета HTML, так что клиент может загрузить его через ajax и заменить часть в страница.В итоге вы получите два определения вида, одно из которых включает foo.jsp в целой странице и один, который содержит только foo.сама ССП. приложение-макет.jsp будет содержать весь скелет HTML с атрибутом" body".
<definition name="foo" template="/WEB-INF/layouts/app-layout.jspx"> <put-attribute name="body"> <definition template="/WEB-INF/views/foo.jsp"> <put-attribute name="message" value="hello"/> </definition> </put-attribute> </definition> <definition name="ajax.foo" template="/WEB-INF/views/foo.jsp"> <put-attribute name="message" value="hello"/> </definition>
Контроллер, который обрабатывает URL
/ajax/foo
, вернет представление "ajax.foo", контроллер, который обрабатывает URL/foo
, вернет представление "foo".@Controller @RequestMapping("/ajax") public void class AjaxController { @RequestMapping("/foo") public String foo() { return "ajax.foo"; } } @Controller @RequestMapping("/") public void class AppController { @RequestMapping("/foo") public String foo() { return "foo"; } }