有两种方法可以解决你的问题,但首先你应该知道,这两个JSP
和el
是服务器端技术,这意味着他们执行e在服务器端生成发送到客户端的响应,以便在浏览器中呈现,因此在您的情况下,一旦产品表第一次在客户端呈现,您将不得不使用一些JavaScript
这是在客户端执行的代码删除/替换该表内容
所以第一种方式是把该表在一个单独的JSP
文件(例如,products_view.jsp
和 而不是返回products
对象,则返回ModelAndView
从您的控制器方法的对象:
控制器
@RequestMapping(method=RequestMethod.GET, value="/products_view")
public ModelAndView MyController() {
// ...
List<Product> products = prodcat.getList();
model.addAttribute("products", products);
return new ModelAndView("products_view");
}
products_view.jsp
<div id="products_table">
<table>
<c:forEach var="p" items="${products}">
<tr>
<td>p.name</td>
<td>p.description</td>
</tr>
</c:forEach>
</table>
<div>
AJAX
// Ajax...
success: function(result) {
if (result.length > 0) {
$("#products_table").html(response);
}
}
另一种方法是你从控制器返回产品列表的JSON或XML响应,然后填充将JSON响应放入客户端的表格中,确保您的依存关系列表中有Jackson
罐子
控制器
@RequestMapping(method=RequestMethod.GET, value="/products_view", produces="application/json")
public @ResponseBody List<Product> MyController()
// ...
List<Product> products = prodcat.getList();
return products ;
}
AJAX
// Ajax...
dataType: "json",
success: function(result) {
if (result.length > 0) {
var productTableHTML = '<table>';
$.each(response, function (key,value) {
productTableHTML +=
'<tr><td>' + key + '</td><td>' + value + '</td></tr>';
});
productTableHTML += '</table>';
$("#products_table").html(productTableHTML);
}
}