我有一个按钮,它在预定义的URL上调用ajax POST方法。在服务器完成它之后,它只是刷新页面
服务器从数据库中提取User对象并更新一列。
当页面刷新时,大约50%的时间,用户仍未更新,刷新的页面显示旧信息
注意 - 清除代码只显示相关的
Ajax post方法:
function buttonClick(){
$.ajax({
type : "POST",
url : "?open_class=1",
success : refresh()
});
}
function refresh(){
window.location = contextPath;
}
Spring MVC
@RequestMapping(value = "/manager/listofquestions", method = RequestMethod.POST)
public String listOfQuestionsPost(
Model model,
HttpServletRequest request,
Principal principal) {
if(request.getParameter("open_class") != null){
userService.openClass(principal.getName());
}
return "success";
}
UserService
@Transactional
public void openClass(String name) {
User user = userDao.getByName(name);
user.setCodeword(codeWordService.GetNewCodeWord());
userDao.update(user);
}
userDAO的
public User update(User user) {
sessionFactory.getCurrentSession().update(user);
return user;
}
public User getByName(String userName) {
Query query = sessionFactory.getCurrentSession().createQuery("from User where username=?");
query.setString(0, userName);
query.setCacheable(true);
Object[] list = query.list().toArray();
if(list.length == 0) {
return null;
}
return (User) list[0];
}
答案 0 :(得分:0)
原来我没能正确使用Ajax。 ajax post一启动就调用了refresh方法,这就是为什么页面刷新得太快了。你需要这样做:
success: function() { refresh(); }
或者像我最终做的那样使用Jquery帖子
最终确定它 - 问题不是hibernate。但是,谢谢你的支持