Spring MVC Ajax重新呈现用户界面重复

首先,我主要有JSF背景。

我最近开始学习Spring MVC。使我困扰的一件事是使用Spring MVC和时重新渲染ajax JQuery

假设我在自己的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在视图中带有标签。我认为这容易出错。

请友好地向我解释我在这里缺少什么。

回答:

首先,Spring MVC非常灵活。您可以具有返回视图引擎生成的HTML的后端处理程序,也可以具有返回JSON / XML /

ProtocolBuffers / etc的处理程序。并使用客户端渲染引擎(如Mustache等)在浏览器中显示页面,或者您可以将两者合并在同一应用程序中。

如果您想在服务器上生成HTML,Spring

MVC允许您使用不同的模板引擎来做到这一点。您可以使用JSP,Freemarker,Velocity等。为此,它使用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);

});

}

以上是 Spring MVC Ajax重新呈现用户界面重复 的全部内容, 来源链接: utcz.com/qa/398187.html

回到顶部