Я бы не сказал, что мой ответ ниже обязательно отвечает на ваш вопрос, но я попал на эту страницу через Google, когда пытался скопировать Spring AjaxEventDecoration (который загружает только фрагменты страницы), поэтомувот что я сейчас обнаружил на случай, если кто-нибудь еще придет сюда:
Быстрый ответ - убедиться, что вы установили свойство 'Accept' для XMLHttpRequest в 'text / html; тип= ajax ', который затем сообщает Spring MVC, что должны быть возвращены только фрагменты (разделенные запятыми), указанные параметром URL «фрагменты».
Я использую Tiles на стороне сервераи jQuery на стороне клиента, это приблизительный обзор моей установки:
Пример webmvc-config.xml
...
<bean id="tilesViewResolver" class="org.springframework.js.ajax.AjaxUrlBasedViewResolver">
<property name="viewClass" value="org.springframework.js.ajax.tiles2.AjaxTilesView" />
</bean>
...
Пример конфигурации страницы Tiles
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<definition name="eventPage" extends="twoColumnLayout">
<put-attribute name="title" value="My Event Page" />
<put-attribute name="view" value="/WEB-INF/jsp/viewText.jsp" />
<put-attribute name="objectViewer" value="/WEB-INF/jsp/viewEvent.jsp" />
</definition>
</tiles-definitions>
У меня есть класс контроллера Java, который возвращает экземпляр ModelMap , которыйсопоставлен с запросом 'eventPage' (.html вмой случай). :
@Controller
public class EventPageController
{
/**
* Method to handle main my events page.
*/
@RequestMapping(value = "/eventPage.html", method = RequestMethod.GET)
public ModelMap pageDisplayHandlerForEvents(ModelMap model, HttpServletRequest req)
{
...
}
}
А затем мой клиентский код JavaScript (который для примера всегда загружает фрагмент 'objectViewer'):
Примечание. Ваши HTML-элементы, загружаемые как фрагменты, должны иметь атрибут ID, совпадающий с атрибутом идентификатора фрагмента.
$(".springFragmentLoader").click(function()
{
$.ajax(__contextRoot + "/eventPage.html?fragments=objectViewer", {
beforeSend: function(req) {
req.setRequestHeader("Accept", "text/html;type=ajax");
},
complete : function(jqXHR)
{
$("#objectViewer").html(jqXHR.responseText);
}
});
}
Подробнее см. Обработка запросов Ajax .
Надеюсь, это поможет.