Skip to content

support @EnableSpringDataWebSupport(pageSerializationMode = EnableSpringDataWebSupport.PageSerializationMode.VIA_DTO) #2625

Closed

Description

@zyro23

Is your feature request related to a problem? Please describe.

starting with spring-boot-3.3.0 / spring-data-commons-3.3.0, you can choose to use PagedModel<T> (part of spring-data's public api) as (default) response representation of spring-data's Page<T> interface.

ref. https://docs.spring.io/spring-data/commons/reference/repositories/core-extensions.html#core.web.page.config

adding @EnableSpringDataWebSupport(pageSerializationMode = EnableSpringDataWebSupport.PageSerializationMode.VIA_DTO) does not change springdoc's behavior - it still uses the Page interface to infer the response representation (which kinda makes sense given it is still the controller method return type)..

Describe the solution you'd like

it would be nice if springdoc would support PageSerializationMode.VIA_DTO, e.g. by making it aware of SpringDataWebSettings.pageSerializationMode or by some means of configuration.

Describe alternatives you've considered

  • works (although not always desirable):
    • using PagedModel explicitly (i.e. changing controller return type from Page<T> to PagedModel<T>) and returning new PagedModel<>(myPage)
  • does not work:
    • adding @ApiResponse(content = @Content(schema = @Schema(implementation = PagedModel.class)))
      • this does not respect generics - i.e. it results in one PagedModel<?> schema (content: any[]) instead of specific representations tied to the contained type like it works for Page<T> (e.g. Page<Person> -> PagePerson schema (content: Person[]))
    • using SpringDocUtils.getConfig().replaceWithClass(Page.class, PagedModel.class)
      • this does not respect generics as well - same problem as above

Additional context

n/a

Activity

  1. added a commit that references this issue on Jun 15, 2024
    cedee7b
  2. added 2 commits that reference this issue on Jun 15, 2024
    3b577e4
    ea45be8
  3. added 3 commits that reference this issue on May 17, 2025
    8eae83f
    153b7dc
    c11959d
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions