【发布时间】:2019-02-19 08:33:55
【问题描述】:
我有一个 jsp 页面,其中包含我用作视图的 html,我正在使用 Ajax 查询以获取 @ResponseBody 的休息端点和 jsp 中的脚本标记,它将每隔几秒调用一次 Ajax 函数。 Ajax 调用当前正在工作,并且至少按计划调用端点。
目前,当我在浏览器中导航到端点时,我会看到来自 Java 的 JSON 响应。
- 如何让它返回带有 html 的实际 JSP 页面?
- 当 Ajax 调用返回并将响应的值分配给
wrapper变量时,我如何告诉页面更新每个字段?
我的控制器和 JSP 的一些代码 sn-ps。
控制器
@Controller
@RequestMapping("/")
public class BackgroundJobController {
private BackgroundJobServiceImpl backgroundJobService = new BackgroundJobServiceImpl();
@RequestMapping(value = "/home", method = RequestMethod.GET, produces = "application/json")
public @ResponseBody Wrapper getHome() {
Wrapper wrapper = new Wrapper();
wrapper.setMessage("done");
return wrapper;
}
}
Home.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="message" value="${wrapper.message}"></c:set>
<script type="text/javascript"
src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
function getUpdate() {
$.ajax({
url : '/home',
success : function(data) {
$('#wrapper').html(data);
}
});
}
</script>
<script type="text/javascript">
var intervalId = 0;
intervalId = setInterval(getUpdate, 3000);
</script>
<Table class="messageTable">
<c:if test="${not empty message}">
<tr><td>${message}</td></tr>
</c:if>
</Table>
【问题讨论】:
-
关键是要实现,where和when执行哪些代码-服务器上的JSP,什么时候请求和渲染页面(即之前响应被发送到浏览器),以及浏览器中的Javascript(即AJAX),之后浏览器接收到已经生成响应。
-
哦,好吧,我对 JSP/Ajax/Spring 开发过程还很陌生。那么这是否意味着一旦我收到来自服务器的成功响应,我需要从 Ajax 调用/一些 Javascript 中更新我的所有字段?
标签: javascript java jquery ajax jsp