Spring Boot: делить dto между определенными контроллерами - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть веб-приложение Spring Boot, в котором несколько контроллеров работают с одним ProductDto объектом.Как только они все сделаны, DTO сохраняется, и вместо этого создается пустой.

То, как это работает для меня, заключается в том, что в каждом контроллере, который работает на ProductDto, я добавляю это:

/* Kotlin code */
@Controller
@SessionAttributes("productDto")
class SomeController {

    @ModelAttribute("productDto")
    fun getProductDto() = ProductDto()

    /* ... */
}

Как только ProductDto сохраняется, я вызываю sessionStatus.setComplete(), и он работает как нужно.

Я хочу иметь возможность объявить этот атрибут сеанса только один раз и только для определенных контроллеров..

Я попытался аннотировать ProductDto с помощью @SessionScope, а затем создать ControllerAdvice:

/* Kotlin code */
@ControllerAdvice(assignableTypes = [ /* List of controller classes */ ])
class SomeControllerAdvice {
    @ModelAttribute("productDto")
    fun getProductDto() = ProductDto()
}

, но каждый контроллер получает пустое значение ProductDto, и ни одно состояние непередано через сеанс.

Что я здесь не так делаю?И как заставить этот сценарий работать без дублирования кода на каждом контроллере?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...