Ajax 有没有办法使用ModelAndView获得@ResponseBody类型的行为?
我认为Rails在控制器设计方面有一点是正确的,那就是您可以对列表、搜索甚至ajax调用使用Ajax 有没有办法使用ModelAndView获得@ResponseBody类型的行为?,ajax,spring,spring-mvc,controller,response,Ajax,Spring,Spring Mvc,Controller,Response,我认为Rails在控制器设计方面有一点是正确的,那就是您可以对列表、搜索甚至ajax调用使用index控制器操作,因为您不必以典型的方式指定返回类型 然而,对于Spring,因为我必须返回model和view来执行更传统的操作,所以我无法轻松返回纯json。我发现我经常需要为ajax调用创建多个基本相同的操作。。。但是由于ajax和非ajax情况下需要不同的注释和返回类型,我必须有两个控制器操作 有没有一种方法可以让Spring在不使用诸如@RequestBody之类的注释的情况下使用ajax?
index
控制器操作,因为您不必以典型的方式指定返回类型
然而,对于Spring,因为我必须返回model和view
来执行更传统的操作,所以我无法轻松返回纯json。我发现我经常需要为ajax调用创建多个基本相同的操作。。。但是由于ajax和非ajax情况下需要不同的注释和返回类型,我必须有两个控制器操作
有没有一种方法可以让Spring在不使用诸如@RequestBody
之类的注释的情况下使用ajax?我可以有一个控制器操作返回ModelAndView
,甚至可以用于不需要视图的ajax调用吗
我真的很想完全避免
@RequestBody
。它不仅会导致我复制本质上相同的控制器操作,从而使我的RESTful接口膨胀,但这也使得使用handleAdapter
进行测试变得更加困难,因为您始终必须使用model和View
。这可以通过使用viewsolver
来完成,它将根据请求的某些属性将响应的呈现委托给不同的视图
实现
Spring已经有了MarshallingView
和MappingJacksonJsonView
来呈现XML和JSON响应。此外,Spring正是为了这个目的,尽管它的逻辑看起来相当复杂和脆弱
因此,您可以使用ContentNegotiatingViewResolver
或创建自己的viewsolver
来解决此问题