我正在尝试使用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());
就这样 !希望它能帮助其他人.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。