我有一个监视仪表板,该仪表板运行java spring作为后端,并具有jsp前端。目前,我将所有内容添加到ModelAndView中,包括存储所有数据并在jsp中显示的对象。设置@Scheduled确实会按预期的方式运行方法,但不会将更新的信息输出到浏览器。
有没有一种方法可以自动获取此数据而不必每次都刷新页面?下面我正在做的代码示例。
Java控制器
@Scheduled(fixedRate = 60000)
@RequestMapping(method = RequestMethod.GET) // Set this to run every minute and return via @SendTo using the websockets
public ModelAndView getHome() {
Wrapper wrapper = new Wrapper();
UATIssues uatIssues = backgroundJobService.runGetCurrentUATIssues();
wrapper.setUatIssues(uatIssues);
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("wrapper", wrapper);
modelAndView.setViewName("home");
return modelAndView;
}
Jsp文件
<table class="uatIssue">
<c:if test="${not empty uatTicketNumList}">
<c:forEach items="${uatTicketNumList}" var="uatTicketNumList">
<tr><td>${uatTicketNumList}</td></tr>
</c:forEach>
</c:if>
答案 0 :(得分:1)
您希望您的@Scheduled
方法返回哪个浏览器/客户端?
这将无法以这种方式工作。
@Scheduled
注释用于在服务器端上执行一些操作/作业。它不知道请求者(您的浏览器-客户端)。
要获取fresh
数据,您需要:
1)定期(即每2分钟)从JSP页面调用Controller
的终结点,然后解析数据(AJAX
)。示例:A Simple AJAX with JSP example
或
2)实施Web套接字,并在发生更改时立即通知您的前端。更多:https://spring.io/guides/gs/messaging-stomp-websocket/