排序不适用于以下方法

时间:2015-12-28 06:33:17

标签: java spring

我的控制器java文件中定义了以下getTrans方法。因为它是GET请求,所以我可以看到结果(使用SOAP UI客户端) 关注http://localhost:8080/itl/fin/trans?bId=ABC2的API调用bId = ABC2

我正在尝试测试sortBy无法正常工作的事情,为此我尝试测试网址如下:

http://localhost:8080/itl/fin/trans?bId=ABC2&sortBy=DESC

我的问题:

1)如果上述api通话看起来正确,请告诉我?因为当我在SOAP UI上运行上面的URI时,我没有看到任何变化    与我首先测试的URI相比,JSON响应。

2)由于排序不起作用,下面的代码中是否有任何错误进行排序?

@RequestMapping(value = "/itl/fin/trans", method = RequestMethod.GET)
  @ResponseBody
  public ResponseEntity<SetRESTData<FinTransactionDTO>> getTrans(

    @RequestParam(value = "bId", required = true) final String bId,
    @RequestParam(value = "status", required = false) final String statusString,
    @RequestParam(value = "transactionMethod", required = false) final String transMethodString,
    @RequestParam(value = "sortBy", required = false) final String orderBy,
    @RequestParam(value = "sortDirection", required = false) final String sortDirectionString) {

    final FinTransStatus status = StringUtils.isBlank(statusString) ? null : FinTransStatus.fromCode(statusString);
    final FinTransMethod method =
      StringUtils.isBlank(transMethodString) ? null : FinTransMethod.fromCode(transMethodString);

    final FinTransPaginationData paginationData = StringUtils.isBlank(orderBy) ?
      null : new FinTransPaginationData(FinTransSortableField.fromCode(orderBy), null, null, sortDirectionString);

    final ServiceResultDetails<Set<FinTransDTO>> resultsDetails =
      finTransService.getTransactionsForEmployeeUse(bId,status, method, paginationData);

    final ResponseCode errorCode = resultsDetails.getErrorCode();
    if (errorCode != null) {
      return buildNoCacheNoCorsEmptySetRESTDataWithMessage(errorCode, resultsDetails.getErrorMessage());
    } else {
      return buildNoCacheSetRESTDataResponse(
        resultsDetails.getEntity(), ResponseCode.FIN_TRANS_RETRIEVED, ResponseCode.FIN_TRANS_NOT_FOUND, false);
    }
  }

2 个答案:

答案 0 :(得分:0)

我在你的代码中注意到了这一点:

final FinTransPaginationData paginationData = StringUtils.isBlank(orderBy) ?
    null :
    new FinTransPaginationData(FinTransSortableField.fromCode(orderBy), null, null, sortDirectionString);

如果sortDirectionString为空,则不会发生排序..只有您知道,因为我们没有任何代码。

答案 1 :(得分:0)

只是一个Controller方法,我们无法确定是否正确,

 final FinTransPaginationData paginationData = StringUtils.isBlank(orderBy) ?
      null : new FinTransPaginationData(FinTransSortableField.fromCode(orderBy), null, null, sortDirectionString);

我们不知道这条线是不对,可能是你的排序方法有误?

你需要设置一个断点并一步一步地观察变量值是否符合预期?