SpringMVC,jquery,tiles和部分重新渲染

前端之家收集整理的这篇文章主要介绍了SpringMVC,jquery,tiles和部分重新渲染前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试使用spring mvc 3.1,tiles 2和jquery对我的网站进行部分渲染.

这是我的春天:

我的瓷砖conf:

如您所见,有一个名为“productSearchResults”的嵌套属性.这是结果页面,我希望通过ajax重新呈现此页面.

我的控制器:

@RequestMapping(params = "search=true",value = "/",method = RequestMethod.POST)
public String searchHandler(@Valid final SearchFormBean searchformBean,final Model model) {
    model.addAttribute("productsList",productsService.findProducts(searchformBean.getSearchCriteria()));
    return "productsSearch";
}

我的jsps:

productsSearch.jsp:

productSearchResults.jsp:

最后是productSearch.jsp中包含的.js文件

$('select[id="searchCriteria.resultsSort"]').change(function() {
    $.ajax({
        type : "POST",url : "/myapp/product/search/",data : "search=true&fragments=productSearchResults",success : function(response) {
            $("#search-results").html(response);
        },error : function(e) {
            alert('Error : ' + e);
        }
    });
});

事情就是这样:每次我在productsSearchResults.jsp页面中更改“searchCriteria.resultsSort”选择器值时,我都希望重新加载结果图块(不重新加载整个页面).

使用上面给出的代码,我设法重新渲染整个页面(包括html标签……),但不仅仅是感兴趣的部分.

有关如何实现目标的任何暗示?是真的可能还是我误解了部分渲染原理?

最佳答案
我发现了什么问题,所以我回答了我自己的问题……

我刚刚将javascript代码更改为:

$('select[id="searchCriteria.resultsSort"]').change(function() {
$.ajax({
    type : "POST",beforeSend : function(req) {
        req.setRequestHeader("Accept","text/html;type=ajax");
    },success : function(response) {
        $("#search-results").html(response);
    },error : function(e) {
        alert('Error : ' + e);
    }
});
});

现在它有效!

由于部分重新渲染,似乎“searchCriteria.resultsSort”选择器不再映射到表单,一旦页面重新加载到屏幕,所以我还要将此行添加到我的控制器:

model.addAttribute("searchCriteria",searchformBean.getSearchCriteria());

就这样 !希望它能帮助其他人.

猜你在找的SpringMVC相关文章