当前位置: 首页 > 知识库问答 >
问题:

显式状态排序属性

毛德华
2023-03-14

我试图实现分页和排序的HTTP请求使用Spring的分页。一切正常,除了我想明确声明可排序的属性,即资源属性idname创建。默认实现允许用户调用HTTP请求和排序结果的所有属性。但是,我想限制排序仅列idname

下面是我当前代码的示例

@GetMapping("/items")    
public Page<ItemDto> getItems(Pageable pageable) {
  return itemsRepository.findAll(pageable).map(itemsMapper::toItemDto);
}

显而易见的解决方案是从可分页对象中检索排序对象,并像这样手动验证属性

@GetMapping("/items")    
public Page<ItemDto> getItems(Pageable pageable) {
  pageable.getSort().forEach(order -> {
    if (!StringUtils.equalsAnyIgnoreCase(order.getProperty(), "id", "code") {
      // throw exception
    }
  }
return itemsRepository.findAll(pageable).map(itemsMapper::toItemDto);

}

我的问题是,在Spring中是否存在一种仅通过显式定义的属性进行排序的更简单方法

共有1个答案

何高歌
2023-03-14

为了只创建一个分页表,该分页表仅按id和名称对找到的项目进行排序,您可以使用以下代码段,或者换句话说,访问存储库,如下所示:

Pageable pageable = PageRequest.of(pageNumber, pageSize, Sort.by("id", "name"));
itemsRepository.findAll(pageable);
 类似资料:
  • 我有一个字段(比如color),它可以有四个值(红色、蓝色、黄色和绿色)之一。我想对它们进行排序,这样红色将有一个1的分数,所以所有的红色将在顶部,其次是蓝色,分数为2,黄色,分数为3等等。 如何为ElasticSearch中的排序分配这些手动评分?

  • 我有您的典型API路由,但是我仍然需要它返回它正在使用的Ok JSON blob,但是我需要将HttpStatusCode指定为不同的东西。 下面是API方法。 我试图实现这一点,但没有任何运气。对于非OK响应,返回带有IHttpActionResult的内容 也尝试过做这样的事情..但是没有任何运气。

  • 这是我的清单: 我想按对列表进行排序,如果相等,则按排序,如果相等,则按排序。但是到目前为止,我只能使用Lambda表达式按一个属性排序: 如果我尝试 事实证明是错误的。。。

  • 我已经为servlet编写了这段代码 我已经编译了它,它对应的html文件action属性值是 web.xml包含 servlet name four servlet类Httpservlet1 servlet-name 4 url-模式 /HTTPSERVLET在xml代码格式下运行时仍然显示错误信息

  • 主要内容:介绍,实现,State.java,StartState.java,StopState.java,Context.java,StatePatternDemo.java,更多文章在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。 介绍 意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。 主要解决:对象的行为依

  • 在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。 介绍 意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。 主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。 何时使用:代码中