在我的页面的一部分中,我需要有一个ActivityFeed,它显示来自用户的最新输入数据。
所以有用户模型..以及调查模型。
用户提供一些输入,然后它们显示在Survey表中。 Survey模型的字段带有时间戳
@CreationTimestamp
@Column(name = "submitedTime",nullable=false)
@Temporal(TemporalType.TIMESTAMP)
private Date submittedDate;
所以我所做的是在SurveyRepository上调用一个方法:
List<Survey> findTop10ByOrderBySubmittedDateDesc();
这将返回我最近提交的10份调查报告。 然后我为此创建一个端点:
@RequestMapping(value="getActivityFeed",method=RequestMethod.GET)
public @ResponseBody List<Survey> getSurveys(){
return surveyService.findTop10ByOrderBySubmittedDateDes();
}
然后通过我的JS的Ajax调用,我调用Endpoint,并提取信息。
这是创建活动Feed的正确方法吗? 或者是否有一种方法,在每次提交的价值之后,活动源都会更新?
我也在使用Spring-Boot和Thymeleaf。
感谢
答案 0 :(得分:0)
我想您正在使用setInterval通过Ajax获取最近的活动。没关系,但更好的方法是使用websocket(避免用户轮询你的服务器消耗宝贵的资源):
WebSockets是一项先进技术,可以在用户的浏览器和服务器之间打开交互式通信会话。
(MDN Webdocs - https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API)
它非常轻量级,我认为它是根据真实后端事件更新用户视图的最佳选择。
更好地了解Mozilla的参考资料,并查看其他参考资料: