Issue
I'm trying to remove white label error page, so what I've done was created a controller mapping for "/error",
@RestController
public class IndexController {
@RequestMapping(value = "/error")
public String error() {
return "Error handling";
}
}
But now I"m getting this error.
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
Don't know whether I'm doing anything wrong. Please advice.
EDIT:
Already added
error.whitelabel.enabled=false
to application.properties file, still getting the same error
Solution
You need to change your code to the following:
@RestController
public class IndexController implements ErrorController{
private static final String PATH = "/error";
@RequestMapping(value = PATH)
public String error() {
return "Error handling";
}
@Override
public String getErrorPath() {
return PATH;
}
}
Your code did not work, because Spring Boot automatically registers the BasicErrorController
as a Spring Bean when you have not specified an implementation of ErrorController
.
To see that fact just navigate to ErrorMvcAutoConfiguration.basicErrorController
here.
Answered By - geoand
Answer Checked By - Marilyn (JavaFixing Volunteer)