Как я могу повлиять на процесс выбора конвертера сообщений в AnnotationMethodHandlerAdapter
для полученного POJO по расширению URL?Я хотел бы иметь больше представлений одного объекта данных, в то время как представление данных должно быть выбрано запрошенным расширением URL, например /users/2.xml
или /users/2.json
.
Текущая конфигурация обработчиков сообщений, которая должна выбираться на основерасширение URL:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
<bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"
p:marshaller-ref="xmlMarshaller" p:unmarshaller-ref="xmlMarshaller" />
</list>
</property>
</bean>
Есть один способ, который мне почти удобен и который использует ContentNegotiatingViewResolver , однако я бы хотел обойти процесс разрешения представления и напрямую использоватьконвертеры сообщений.Также при создании действий использование ResponseEntity в public ResponseEntity<User> showUser()
обеспечивает детальный контроль над получающимися определениями кодов состояния http (OK, NOT_FOUND, NO_CONTENT, ..).Я не смог найти способ использования ResponseEntity с ContentNegotiatingViewResolver, который также удовлетворил бы мои потребности.
Другим способом могло бы быть изменение заголовка запроса accept
на application/xml
или application/json
на основе URLрасширение.Таким образом, вся обработка должна идти непосредственно к сконфигурированному конвертеру сообщений.Однако я не знаю разумного способа подделать заголовки запроса.
Спасибо.