Я попытался создать пользовательский конвертер, как указано в - https://www.baeldung.com/spring-type-conversions#creating -a-custom-converter , но при преобразовании все еще наблюдается несоответствие типов.
Я создаю класс конвертера (PageToApiResponse), который преобразует страницу <*> в ResponseList. Этот конвертер затем добавляется в реестр в классе WebConfig. Однако, когда я хочу неявно преобразовать страницу в ResponseList в контроллере, я получаю несоответствие типов (служба возвращает страницу ). Я попытался аннотировать класс конвертера с помощью @Component, но это не работает.
Ошибка заключается в следующем: Обязательный: ResponseList. Найдено: Страница
Любая помощь будет принята с благодарностью.
Вот участвующие классы -
data class ResponseList(
val total: Int,
val limit: Int,
val offset: Int,
val results: List<*>
)
class PageToApiResponse : Converter<Page<*>, ResponseList> {
override fun convert(source: Page<*>) = ResponseList(source.numberOfElements, source.size, source.number, source.content)
}
@Configuration
class WebConfig : WebMvcConfigurer {
override fun addFormatters(registry: FormatterRegistry) {
registry.addConverter(PageToApiResponse())
}
}
@ApiOperation(value = "Find demand by GPI")
@ApiResponses(
ApiResponse(code = 200, message = "Demand results", response = ProductDemand::class, responseContainer = "List"),
ApiResponse(code = 400, message = "Bad input parameter"),
ApiResponse(code = 401, message = "Unauthorized"),
ApiResponse(code = 429, message = "Too Many Requests")
)
@PreAuthorize("hasAnyAuthority('${Authorities.EXT_USAGE_VIEW}')")
@GetMapping("")
fun getDemand(
@RequestParam(required = true) gpi: String,
@PageableDefault(
page = 0,
size = 50,
sort = ["molecule"],
direction = Sort.Direction.DESC
) pageable: Pageable
): ResponseList = service.getDemand(gpi, pageable)