如何从控制器返回多个值到视图

时间:2017-01-10 09:33:08

标签: jquery spring

以下是我的控制器代码:

@RequestMapping(value = "/productProgramsDataTable", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
  @ResponseBody
  public ResponseEntity<List<ProductsDataTableItemDto>> getInitiaorTasks(String productStatusType, String productStatusForEachProduct) {
    final long l1 = System.currentTimeMillis();
    ResponseEntity<List<ProductsDataTableItemDto>> retDetail = null;
    List<ProductsDataTableItemDto> ppdList = null;
    List<String> statusVar = null;
    try {
      ppdList = programPlannerListService.productPrograms();
      statusVar.add(productStatusType);
      statusVar.add(productStatusForEachProduct);
    } catch (final Exception e) {
      e.printStackTrace();
    }
    retDetail = new ResponseEntity<>(ppdList,HttpStatus.OK);
    return retDetail;
  }

retDetail 一起,我想返回 productStatusType productStatusForEachProduct

如何将这些值返回给jQuery?

2 个答案:

答案 0 :(得分:2)

在您的Controller中,您可以将从JSP / JS访问的数据添加到Model model

model.addAttribute("productStatusForEachProduct", productStatusForEachProduct);
model.addAttribute("productStatusType", productStatusType);
model.addAttribute("retDetail", ppdList);

然后,在你的JSP中

<script>
    var productStatusForEachProduct = "${productStatusForEachProduct}"; 
    var productStatusType = "${productStatusType}"; 
    var retDetail= "${retDetail}"; 
</script>

答案 1 :(得分:0)

尝试创建一个包含所有返回对象的bean,并为每个对象设置一个getter和setter,这样在方法中你可以设置所有这些对象,并在需要时随时获取它们。类似的东西

public class Container{
    ResponseEntity<List<ProductsDataTableItemDto>> retDetail;
    String productStatusType;
    String productStatusForEachProduct;

    // Getters and setters
}

这样你就可以:

Container result = new Container();
result.setRetDetail(retDetail);
result.setProductStatusType(productStatusType);
result.setProductStatusForEachProduct(productStatusForEachProduct);
return result;

然后将返回类型更改为Container。

另一种可能性是在Container类中放置一个包含三个字段的构造函数,并使用它来创建结果。