По умолчанию ContentNegotiatingViewResolver
использует заголовок запроса HTTP Accept
, чтобы решить, какое представление отображать.Он будет отправлять обратно представление XML только в том случае, если клиент указал в этом заголовке, что он может обрабатывать application/xml
тип содержимого, что делают некоторые браузеры.
Если браузер указывает, что он может принимать HTML и XML, тогда это непредсказуемо, к которому вы вернетесь.В отсутствие какой-либо другой информации Spring не может решить, какую вы хотите.
Если ваш URL-путь просто /
, то вы не предоставляете ему никакой полезной информации, кроме того, что отправляет браузер.по умолчанию.
ContentNegotiatingViewResolver
можно перенастроить для использования расширения файла в URL-адресе, чтобы решить, какое представление разрешить, установив для свойства favorPathExtension
значение true
.Это будет, например, ответ на запрос /blah.xml
с XML, имеющий приоритет над заголовком Accept
.
ContentNegotiatingViewResolver
имеет несколько других вариантов, я предлагаю прочитать javadoc осторожно.