【发布时间】:2014-10-09 23:10:30
【问题描述】:
我的网站结构是这样的:
menu.jsp
...
`<li id="menu"><a href="index.jsp?page=pizzas"><i class="fa fa-angle-double-right"></i>Pizzas</a></li>`
...
index.jsp
...
<c:when test="${param.page == 'pizzas'}">
<jsp:include page="/pages/cadastro/pizzas.jsp" />
</c:when>
...
pizzas.jsp
<c:forEach var="pizza" items="${pizzas}">
<td data-title="#">${pizza.id}</td>
<td data-title="Description">${pizza.description}</td>
<td data-title="Type">${pizza.type}</td>
</c:forEach>
尝试在 pizzas.jsp 上插入 html 时出现问题:如何使用 servlet 填充我的 <td>'s?应该在哪里调用?当pizzas.jsp 像这样准备好时,我考虑过调用ajax 函数:
$(document).ready(function() {
$.ajax({
url: "PizzaController?action=listPizzas",
type: 'GET',
success: function (result) {
},
complete: function() {
alert('complete');
}
});
}
在我的 Servlet (PizzaController) 中:
private void listPizzas(HttpServletRequest request, HttpServletResponse response) {
List<Pizza> pizzas = new ArrayList<>();
try {
pizzas = pizzaDaoImpl.findAll();
} catch (Exception e){
System.out.println(e.getMessage());
}
request.setAttribute("pizzas", pizzas);
try {
RequestDispatcher rd = request.getRequestDispatcher("/index.jsp?page=pizzas");
rd.forward(request,response);
} catch (IOException e1) {
e1.printStackTrace();
} catch (ServletException e){
e.printStackTrace();
}
}
这样做的问题是 pizzas.jsp 会被调用两次:1)在菜单点击时; 2) ajax 调用。
那么,在这种情况下插入动态 html 的最佳方法是什么?
【问题讨论】:
-
实际问题是什么?您是否试图避免重新加载页面以更新在 Pizzas.jsp 中显示的表格?要根据按钮单击动态更新表格?