【问题标题】:Spring Boot Rest controller: adding text in the return typeSpring Boot Rest控制器:在返回类型中添加文本
【发布时间】:2018-07-16 10:42:36
【问题描述】:

我有一个 SpringBoot 应用程序。使用 RestController

@RestController
@RequestMapping("/api/aggreg")
public class AggregRestController  {

@GetMapping("/list")
    public List<AggregCalcTrainsXCompany> aggregList  ()
            throws IOException, URISyntaxException, DataAccessException, SQLException {

        return aggregService.findAll();
    }
}

因为我想在 DataTable ajax 调用中使用这个控制器,所以我需要在开头添加这段代码:

{
  "data":

最后加上} 让它工作,但我不知道这是否可能

【问题讨论】:

  • 使用Map&lt;String, List&lt;...&gt;&gt; 作为返回类型,并在您的方法中实例化HashMap,将aggregService.findAll() 关联到“数据”键。然后返回地图。
  • @MarcTarin,请转换为答案....

标签: java json spring-boot datatable restful-architecture


【解决方案1】:

正如我评论的那样,您只需返回 Map 而不是 List&lt;AggregCalcTrainsXCompany&gt;

@RestController
@RequestMapping("/api/aggreg")
public class AggregRestController  {

    @GetMapping("/list")
    public Map<String, List<AggregCalcTrainsXCompany>> aggregList  ()
            throws IOException, URISyntaxException, DataAccessException, SQLException {
        Map<String, List<AggregCalcTrainsXCompany>> m = new HashMap<>();
        m.put("data", aggregService.findAll());

        return m;
    }
}

地图将被序列化为

{
   "data" : <here the result from your aggregtation> 
}

【讨论】:

    【解决方案2】:

    你有两个选择:

    1. 使用data 字段将您的列表包装到类中并返回它:

      class Result {
          List<AggregCalcTrainsXCompany> data;
      }
      
    2. (根据评论建议)返回Map&lt;String, List&lt;AggregCalcTrainsXCompany&gt;&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      • 2017-02-19
      • 1970-01-01
      • 2018-07-14
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      相关资源
      最近更新 更多