JavaSpringAjax控制器接受提交而不刷新页面
我在我的Spring页面中使用了Starbox。我想提交用户评级,以便将其存储在数据库中,而不必为用户刷新页面。如何让Spring控制器接受此值而不必返回新视图。我不一定需要返回任何更新的html——如果用户单击Starbox,这就是所需要的
类似地,如果我有一个带有submit按钮的表单,并且希望在submit上保存表单值,但不一定要将用户发送到新页面,那么我如何让控制器这样做?我还没有找到一个很好的SpringAjax教程——任何建议都很好
# 1 楼答案
如果使用注释,可能更优雅的不返回视图的方法是声明一个带有
@ResponseStatus(HttpStatus.OK)
或@ResponseStatus(HttpStatus.NO_CONTENT)
注释的void
返回控制器方法如果使用
Controller
类,只需从handleRequest
返回null
要通过AJAX调用将from发送到控制器,可以使用客户端Javascript库(如果有)的适当功能,例如jQuery中的post()和serialize()
# 2 楼答案
浏览器上的AJAX逻辑可以简单地忽略服务器发回的任何数据,不管它用什么响应
但是,如果你真的想确保没有回复主体被发回,那么你可以做一些事情。如果使用带注释的控制器,可以通过将
HttpServletResponse
参数添加到@RequestMapping
方法中,给Spring一个不希望它生成响应的提示。您不必使用响应,但将其声明为参数会告诉Spring“我自己处理响应”,并且不会返回任何内容编辑:好的,所以您使用的是老式Spring 2.0风格的控制器。如果你在Controller接口上阅读javadoc,你会看到它说
因此,如果您不想呈现视图,那么只需从控制器返回
null
,就不会生成响应体