当前位置: 首页 > 知识库问答 >
问题:

SpringMVC如何避免在插入数据库后重新加载页面

司空思聪
2023-03-14

我有一个使用文本输入的表单和一个将文本添加到数据库表的控制器

@RequestMapping(value= "/stuff/add", method = RequestMethod.POST)
public String addStuff(@ModelAttribute("someForm") @Valid Stuff 
stuff,BindingResult bindingResult,Model model){

    //code for inserting to a database
    session.persist(stuff);
    return null;
}

我使用ajax调用这个函数,如下所示:

$('#somebutton').click(function () {
e.stopPropagation();
$.ajax({
  type: 'post',
  url: '/stuff/add',
  data: $('form').serialize(),
  success: function () {
    alert(data);
  }
});
return null;
});

数据已成功插入。然而,当控制器试图重定向到/stuff/add时,我遇到了一个错误

HTTP Status 404 - /app/WEB-INF/views/stuff/add.jsp

我的背景。xml有以下条目

    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".jsp" />

我尝试将addStuff的返回类型更改为void。然而,我收到了相同的错误消息。

如何在不重定向或刷新页面的情况下插入到数据库?

共有1个答案

上官英哲
2023-03-14

将<code>@ResponseBody</code>注释放在方法的顶部,并将返回类型更改为<code>Response实体

@RequestMapping(value= "/stuff/add", method = RequestMethod.POST)
@ResponseBody 
public ResponseEntity<String> addStuff(@ModelAttribute("someForm") @Valid Stuff 
stuff,BindingResult bindingResult,Model model){
//code for insert
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json; charset=utf-8");
return new ResponseEntity<String>("{\"msg\":\"success\"}", headers, HttpStatus.OK);
}

并在此方法中返回一些字符串/布尔值,然后在AJAX成功函数中检查该字符串,并根据您决定使用重定向的响应

success: function (data) {
    if(data.msg == "success"){
      window.location.href = "redirectURL";
    }
    alert(data);
  }
 类似资料:
  • 我正在试图找到一个解决方案,解决重新加载后在中崩溃的问题。情况: 树形结构 现在我必须添加。为此,我得到了,并使用方法I添加。 在这之后,我调用树的DefaultTreeModel上的方法。 问题是,在这个调用之后,树将全部崩溃: 而且我必须手动展开节点以确保节点被添加... 我的密码。。。 当我添加节点时。。。 问题在于节点的位置。和节点没有层次结构。 有没有办法避免这种行为?谢谢 也许另一种方

  • 我认为这是一个常见的问题,但我还没有找到任何解决方案,也许我没有在谷歌上正确地搜索这个问题。总之,我有一个在表中插入多行的过程(在同一个事务中的许多其他事情中),但是这个过程是在多个线程和多个服务器中执行的。 描述是唯一的,但不作为数据库(旧版)中的约束,我想避免插入重复的描述。我已经隔离了搜索并插入到一个独立的事务中,我想在选择之前锁定表,如果它不存在,则在“保存”之后释放它。 我想要这样的东西

  • 我有一个反应应用程序开发的底漆-反应模板。它有一个管理仪表板,在仪表板侧板中有几条路由。我已经在我的index.js中设置了一个身份验证路由,当我访问每条路由时,它都运行得很好。但是当重新加载页面时,页面显示404页面找不到! 我保护“/”路径不受AUthrote的影响,这样每个以“/”开头的路径都受到保护(我在仪表板中有路由,如“/usertable”、“/users”、“/payments”等

  • 我有一个简单的项目,该项目将个人信息提供给数据库(sqlite),现在我想避免插入重复值(按名称),我不能做什么?谢谢你们

  • 问题内容: 我想做一个常见问题面板,当用户问它在部门顶部显示的任何问题而无需重新加载页面时,我想我必须每隔几秒钟就与数据库建立连接。现在的问题是,如何在不重新加载页面的情况下建立连接,以及如何显示新问题? 问题答案: 您有两种选择: Ajax,它允许您使用JavaScript从服务器检索数据,然后可以使用它来操作DOM。Ajax的基础是对象,它使您可以在JavaScript中完全检索后台数据。请注

  • 我有一个严重的问题,我没有弄清楚。我有一个表名叫做“结果”。我想要实现的是,当我插入新记录时,它会正确地插入数据库。 在这个水平上,我的脚本运行良好。但是我想第二次点击添加新结果记录时,如果之前输入了数据,那么它将显示我的数据,如果我想更新我的数据,我可以。如果以前没有输入数据,那么我会将数据插入数据库。我成功地限制用户输入重复数据,但我没有成功地在同一页上显示数据。 我有一个显示测试页面,当我点