Я пытаюсь удалить страницу с ошибкой белой метки, поэтому я создал отображение контроллера для "/ error",
@RestController
public class IndexController {
@RequestMapping(value = "/error")
public String error() {
return "Error handling";
}
}
Но теперь я получаю эту ошибку.
Exception in thread "AWT-EventQueue-0" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping found. Cannot map 'basicErrorController' bean method
public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletR equest)
to {[/error],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}: There is already 'indexController' bean method
Не знаю, делаю ли я что-то не так. Пожалуйста посоветуй.
РЕДАКТИРОВАТЬ:
Уже добавлено
error.whitelabel.enabled=false
в файл application.properties, но ошибка та же
spring
spring-boot
Ясита Вадуге
источник
источник
spring.resources.add-mappings=false
?/error
вызове пути?Ответы:
Вам нужно изменить свой код на следующее:
Ваш код не работал, потому что Spring Boot автоматически регистрирует
BasicErrorController
как Spring Bean, когда вы не указали реализациюErrorController
.Чтобы увидеть этот факт просто перейдите
ErrorMvcAutoConfiguration.basicErrorController
сюда .источник
BasicErrorController
(см. Github.com/spring-projects/spring-boot/blob/… ), чтобы достичь желаемогоErrorAttributes
объект (содержащий подробности ошибки), но затем я попытался просто @Autowiring его, и он работает. То, чем я занимался сейчас: gist.github.com/jonikarppinen/662c38fb57a23de61c8bЕсли вам нужна более «JSONish» страница ответа, вы можете попробовать что-то вроде этого:
источник
Spring boot doc «был» не прав (с тех пор они это исправили):
должно быть
источник
/error
равно отобразит конечную точку . Чтобы освободить/error
набор конечных точекserver.error.path=/error-spring
или какой-либо альтернативный путь.Вы можете полностью удалить его, указав:
Тем не менее, обратите внимание, что это, вероятно, приведет к тому, что вместо этого появятся страницы whitelabel контейнера сервлета :)
РЕДАКТИРОВАТЬ: Другой способ сделать это через application.yaml. Просто введите значение:
Документация
Для Spring Boot <2.0 класс находится в пакете
org.springframework.boot.autoconfigure.web
.источник
Руководство здесь говорит , что вы должны установить
server.error.whitelabel.enabled
дляfalse
отключить стандартную страницу ошибки. Может быть, это то, что вы хотите?Я испытываю ту же ошибку после добавления / отображения ошибок, кстати.
источник
/error
равно отобразит конечную точку . Чтобы освободить/error
набор конечных точекserver.error.path=/error-spring
или какой-либо альтернативный путь.С Spring Boot> 1.4.x вы можете сделать это:
но тогда в случае исключения контейнер сервлета отобразит свою собственную страницу ошибки.
источник
Это зависит от вашей весенней загрузки:
Когда SpringBootVersion <=,
1.2
тогда используйтеerror.whitelabel.enabled = false
Когда SpringBootVersion > =,
1.3
тогда используйтеserver.error.whitelabel.enabled = false
источник
В Spring Boot 1.4.1 с использованием шаблонов Mustache достаточно поместить error.html в папку шаблонов:
Дополнительные переменные могут быть переданы путем создания перехватчика для
/error
источник
Вот альтернативный метод, который очень похож на «старый способ» определения отображений ошибок в
web.xml
.Просто добавьте это в конфигурацию Spring Boot:
Затем вы можете определить страницы ошибок в статическом контенте как обычно.
Настройщик также может быть отдельным
@Component
, при желании.источник
Я использую Spring Boot версии 2.1.2, и
errorAttributes.getErrorAttributes()
подпись не работает для меня (в ответ acohen). Я хотел получить ответ типа JSON, поэтому немного покопался и обнаружил, что этот метод сделал именно то, что мне нужно.Я получил большую часть своей информации из этой темы, а также из этого блога .
Во-первых, я создал,
CustomErrorController
что Spring будет искать для сопоставления любых ошибок.Во-вторых, я создал
CustomHttpErrorResponse
класс, который возвращает ошибку как JSON.Наконец, мне пришлось отключить Whitelabel в
application.properties
файле.Это должно даже работать для
xml
запросов / ответов. Но я не проверял это. Он сделал именно то, что я искал, так как я создавал RESTful API и хотел только вернуть JSON.источник
server.error.whitelabel.enabled = ложь
Включите указанную выше строку в папку «Ресурсы» application.properties
Подробнее об устранении проблем можно найти по адресу http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-customize-the-whitelabel-error-page
источник
Я пытался вызвать REST конечной точки из microservice , и я использовал resttemplate в пут метод.
В моей конструкции , если произошла какая - либо ошибка внутри REST конечной точки он должен вернуть ошибочный ответ JSON, он работал в течение нескольких вызовов , но не для этого поставленных один, он возвратил белую страницу ошибки метки вместо этого .
Итак, я провел некоторое расследование и выяснил это;
Spring попытается понять вызывающую программу, если это машина, то она возвращает ответ JSON или браузер, а затем возвращает страницу с ошибкой белой метки HTML.
В результате: мое клиентское приложение должно было сказать конечной точке REST, что вызывающая сторона - это машина, а не браузер, поэтому для этого клиентскому приложению необходимо добавить ' application / json явно ' в заголовок ACCEPT для метода put 'resttemplate. Я добавил это в шапку и решил проблему.
мой звонок в конечную точку:
для вышеупомянутого вызова мне пришлось добавить ниже заголовок param.
или я попытался изменить пут на обмен, в этом случае обмен вызовами добавил тот же заголовок для меня и тоже решил проблему, но я не знаю почему :)
источник
Spring Boot по умолчанию имеет « белую метку» ошибки », которую можно увидеть в браузере, если вы столкнулись с ошибкой сервера. Страница ошибок Whitelabel - это общая страница ошибок Spring Boot, которая отображается, когда пользовательская страница ошибок не найдена.
Установите «server.error.whitelabel.enabled = false» для переключения страницы ошибок по умолчанию
источник
У меня возникала похожая проблема с сообщением об ошибке WhiteLabel на моем Angular SPA при каждом обновлении.
Исправление состояло в том, чтобы создать контроллер, который реализует ErrorController, но вместо того, чтобы возвращать String, мне пришлось возвращать объект ModelAndView, который перенаправляет в /
источник