Spring MVC混乱

时间:2015-08-20 10:20:16

标签: spring

在我的下面看到了Spring MVC控制器的下面的代码片段 项目POC及以下是其中一种方法。         在这种情况下,getEntityDetails将从数据库获取数据,将该数据转换为JSON对象并返回它。

    @ResponseBody
    @RequestMapping(value = "/com/dbTest/testData", method = RequestMethod.GET)
    public ResponseEntity<String> getEntityDetails
        (HttpSession session, @RequestParam(value="Id", required=false) String Id) throws Exception 
        {
            String userId = (String) session.getAttribute("userId");
            this.getEntity.getEntityData(userId);
            return new ResponseEntity<String>(HttpStatus.OK);
        }

此调用的映射通过Angular JS完成,如下所示:

        return $http({
        url: '/com/dbTest/testData',
        method: 'GET',
        headers: {
          'accept': 'application/json, text/plain, */*'
        }
      });

我在这里很困惑,如何在渲染视图以及为什么不使用ModelAndView。

2 个答案:

答案 0 :(得分:0)

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/ResponseEntity.html

使用另一个构造函数并传递this.getEntity.getEntityData(userId)的值;

ResponseEntity(T body,HttpStatus statusCode)

答案 1 :(得分:0)

ModelAndView需要填充视图名称和模型(数据),但是在AJAX(异步调用)的情况下,我们不需要指定视图名称,并且获取响应数据对我们有利。因此,在这种情况下,ResponseEntity非常适合,可以根据配置文件中定义的映射器返回JSON/XML视图,并且可以像在您的情况下一样轻松地在视图上呈现。

它还为我们提供了定义任意HTTP response headers的灵活性。

  • ResponseEntity(HttpStatus statusCode)
  • ResponseEntity(MultiValueMap<String,String> headers, HttpStatus statusCode)
  • ResponseEntity(T body, HttpStatus statusCode)
  • ResponseEntity(T body, MultiValueMap<String,String> headers, HttpStatus statusCode)