Вы можете сделать следующее:
Шаблон 1:
<body>
...
<table id="userTable">
<c:forEach items="${users}" var="user">
<%@include file="userRow.jsp" %>
</c:forEach>
</table>
...
</body>
userRow.jsp:
<tr>
<td>${user.name}</td>
<td>${user.age}</td>
<td>${user.department}</td>
</tr>
Действие, отображающее полную таблицу, будет перенаправлено на первый шаблон, а действие, обрабатывающее вызов ajax, будет перенаправлено на userRow.jsp.
А в вашем обратном вызове ajax просто добавьте HTML-код, полученный с сервера (то есть результат выполнения userRow.jsp) в конце таблицы. В JQuery это выглядело бы так (где createUser.action
- это действие, которое создает нового пользователя на основе параметров, переданных через объект JavaScript user
, а затем переходит к userRow.jsp
для визуализации вновь созданного пользователя):
function createUser(user) {
$.get("createUser.action", user, ajaxCallbackWhichAddsANewUserToUserTable);
}
function ajaxCallbackWhichAddsANewUserToUserTable(newUserRow) {
$("#userTable").append(newUserRow);
}