有兩種方法可以解決你的問題,但首先你應該知道,這兩個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);
}
}