Spring MVC的AJAX再重新描绘的用户界面复制(Spring MVC ajax re-rer

2019-09-24 02:26发布

首先,我主要用JSF的背景。

我已经开始学习新Spring MVC 。 使用时,一件事是困扰我的是阿贾克斯重新渲染Spring MVCJQuery

让我们想象一下,我已经在我的定义的复杂形式people.jsp观点:

<c:forEach var="person" items="${people}">
   <table>
       <tr class="trPersonClass">...</tr>
       <tr>...</tr>
   </table>
</c:forEach>

我有一个refresh按钮下。 当单击刷新按钮,我想与ajaxpeople重新呈现。

function refreshButtonClicked() {
    $.ajax({
       type: "GET",
       url: "ajax/loadPeople.do"
    }).done(function( msg ) {   
        //WHAT SHOULD I DO HERE???            
    } 
});

所以,我应该怎么办呢? 我已经定义了如何渲染的人应与喜欢c:forEach标签在我jsp 。 我不想再说了。 我不希望在两地重复用户界面代码-在JQuery完成回调,并用JSP在我的意见标签。 这是很容易出错在我看来。

敬请解释我什么,我在这里失踪。

Answer 1:

首先,Spring MVC的是非常灵活的。 你可以有后台处理程序返回由视图引擎生成的HTML,你可以有一个处理程序返回JSON / XML / ProtocolBuffers /等。 并使用客户端渲染引擎,如胡须等在浏览器中显示的页面,也可以在同一应用程序将二者结合起来。

如果你想在服务器上生成HTML,Spring MVC的允许你使用不同的模板引擎来做到这一点。 您可以使用JSP,Freemarker的,速度等。为了做到这一点,它使用一个ViewResolver抽象,并在你的代码,你只需要处理与ModelAndView的API。

在ViewResolver的更多细节可以在这里找到: http://static.springsource.org/spring/docs/3.0.x/reference/mvc.html

根据你的问题听起来好像你有使用JSP创建HTML服务器侧的后端。 为了只更新表,当用户单击刷新按钮不会重新加载整个页面,例如,你可以有一个只返回HTML表像这样的处理程序:

@RequestMapping("/table")
public ModelAndView renderTable() {
   List<People> people = peopleService.findAllPeople();
   return new ModelAndView("/people", "people", people);
}

我也假设你有另一个处理程序,返回所在的表是通过AJAX嵌入主页。

<body>
    ...
    /* Content of div will be populated via ajax*/
    <div id="myTableContainer" />
    ...
</body>

的JavaScript,这将是这样的:

$(function() {

  var myTableContainer = $("#myTableContainer");

  var renderTable = function(container) { 
    $.get("/table", function(data) {
      container.empty().html(data);
    }
  };

  /* This is called on document ready */
  renderTable(myTableContainer);

  /* Use the same renderTable function when the refresh button is clicked */
  $("#refreshButton").click(function() {
      renderTable(myTableContainer);
  });
}


Answer 2:

基本上,我看到两个选项:

  1. 始终使用AJAX,甚至在第一渲染加载表(表创建代码只在您的javascript函数)
  2. 修改AJAX / loadPeople.do返回已呈现表而不是一个JSON名单。 然后,您可以在因素将JSP标记文件的用户表渲染代码或使用一些模板库(砖等),以重新使用该JSP片段。


文章来源: Spring MVC ajax re-rerendering user interface duplication