有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaSpringAjax控制器接受提交而不刷新页面

我在我的Spring页面中使用了Starbox。我想提交用户评级,以便将其存储在数据库中,而不必为用户刷新页面。如何让Spring控制器接受此值而不必返回新视图。我不一定需要返回任何更新的html——如果用户单击Starbox,这就是所需要的

类似地,如果我有一个带有submit按钮的表单,并且希望在submit上保存表单值,但不一定要将用户发送到新页面,那么我如何让控制器这样做?我还没有找到一个很好的SpringAjax教程——任何建议都很好


共 (2) 个答案

  1. # 1 楼答案

    如果使用注释,可能更优雅的不返回视图的方法是声明一个带有@ResponseStatus(HttpStatus.OK)@ResponseStatus(HttpStatus.NO_CONTENT)注释的void返回控制器方法

    如果使用Controller类,只需从handleRequest返回null

    要通过AJAX调用将from发送到控制器,可以使用客户端Javascript库(如果有)的适当功能,例如jQuery中的post()serialize()

  2. # 2 楼答案

    浏览器上的AJAX逻辑可以简单地忽略服务器发回的任何数据,不管它用什么响应

    但是,如果你真的想确保没有回复主体被发回,那么你可以做一些事情。如果使用带注释的控制器,可以通过将HttpServletResponse参数添加到@RequestMapping方法中,给Spring一个不希望它生成响应的提示。您不必使用响应,但将其声明为参数会告诉Spring“我自己处理响应”,并且不会返回任何内容


    编辑:好的,所以您使用的是老式Spring 2.0风格的控制器。如果你在Controller接口上阅读javadoc,你会看到它说

    @return a ModelAndView to render, or null if handled directly

    因此,如果您不想呈现视图,那么只需从控制器返回null,就不会生成响应体