Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 有没有办法使用ModelAndView获得@ResponseBody类型的行为?_Ajax_Spring_Spring Mvc_Controller_Response - Fatal编程技术网

Ajax 有没有办法使用ModelAndView获得@ResponseBody类型的行为?

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?

我认为Rails在控制器设计方面有一点是正确的,那就是您可以对列表、搜索甚至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
来解决此问题