事前定義された URL で ajax POST メソッドを呼び出すボタンがあります。サーバーが処理を完了した後、ページを更新するだけです
サーバーはデータベースから User オブジェクトを取得し、1 つの列を更新します。
ページが更新されると、時間の約 50% で、ユーザーはまだ更新されず、更新されたページには古い情報が表示されます。
注 - コードはクリーンアップされ、関連するもののみが表示されます
Ajax 投稿方法:
function buttonClick(){
$.ajax({
type : "POST",
url : "?open_class=1",
success : refresh()
});
}
function refresh(){
window.location = contextPath;
}
春の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";
}
ユーザーサービス
@Transactional
public void openClass(String name) {
User user = userDao.getByName(name);
user.setCodeword(codeWordService.GetNewCodeWord());
userDao.update(user);
}
ユーザーダオ
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];
}