微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

这是我的春天:

tiles2.AjaxTilesView"/>

我的瓷砖conf:

Finition name="productSearch" extends="baseLayout">
    Finition template="/WEB-INF/views/productSearch.jsp">
            Finition>
    Finition>

如您所见,有一个名为“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:

search-form" method="post" modelattribute="productSearchFormBean">
    

productSearchResults.jsp:

dame">Date4045@IONS disPLAYED HERE...

最后是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());

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐