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

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

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

这是我的春天:

我的瓷砖conf:

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

我的控制器:

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

我的jsps:

productsSearch.jsp:

productSearchResults.jsp:

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

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

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

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

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

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

我刚刚将javascript代码更改为:

  1. $('select[id="searchCriteria.resultsSort"]').change(function() {
  2. $.ajax({
  3. type : "POST",beforeSend : function(req) {
  4. req.setRequestHeader("Accept","text/html;type=ajax");
  5. },success : function(response) {
  6. $("#search-results").html(response);
  7. },error : function(e) {
  8. alert('Error : ' + e);
  9. }
  10. });
  11. });

现在它有效!

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

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

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

猜你在找的SpringMVC相关文章