Я знаю, что можно комментировать методы контроллера с помощью @JsonView(...)
, чтобы статически определить один класс представления в Spring MVC. К сожалению, это означает, что мне нужен другой конечный пункт для каждого типа просмотра, которое я мог бы иметь.
Я вижу, что другие люди задавали этот до. Хотя этот подход может работать, Spring часто имеет много способов сделать то же самое. Иногда решение может быть намного проще, чем вначале, если у вас есть немного знаний о некоторых внутренних компонентах.
Я хотел бы иметь единственную конечную точку контроллера, которая может динамически выбирать соответствующее представление на основе текущего принципала. Возможно ли мне вернуть a Model
с атрибутом, который содержит соответствующий класс представления или, возможно, экземпляр MappingJacksonValue
напрямую?
Я вижу, что в org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter#writeInternal
есть фрагмент кода, который определяет, какой вид использовать:
if (value instanceof MappingJacksonValue) {
MappingJacksonValue container = (MappingJacksonValue) object;
value = container.getValue();
serializationView = container.getSerializationView();
}
Как представляется, из org.springframework.web.servlet.mvc.method.annotation.JsonViewResponseBodyAdvice#beforeBodyWriteInternal
, но у меня возникли проблемы с разработкой, если есть способ, которым я мог бы обойти это просто путем возврата определенного значения, которое содержит необходимую информацию для Jackson2HttpMessageConverter
, чтобы выбрать правильный вид,
Любая помощь очень ценится.