How to resolve Whitelabel Error Page in Spring Boot
In this article, we will explore how to handle Whitelabel Error Page in Spring Boot application. During the development of Spring application, sometimes we face the Whitelabel Error Page and Spring Framework suggests us ‘This application has no explicit mapping for /error
, so you are seeing this as a fallback‘ as shown below:
P.S Tested with Spring Boot and Thymeleaf 2.1.8.RELEASE version.
We can resolve the Whitelabel Error Page error in 3 ways:
1. Custom Error Controller
By implementing the ErrorController
interface provided by the Spring Framework itself and overrides its getErrorPath()
method to return a custom path to call when an error occurred:
package org.websparrow.controller;
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ErrorrHandlerController implements ErrorController {
@GetMapping("/error")
public String customError() {
return "The link you followed may be broken, or the page may have been removed.";
}
@Override
public String getErrorPath() {
return "/error";
}
}
In the customError()
method, we return the custom message. If we trigger a 404, 500, etc error now, our custom message will be displayed.
2. Displaying Custom Error Page
Create a error.html page and put it into the src/main/resources/templates directory. Spring Boot’s BasicErrorController
will automatically be picked it up by default.
<!DOCTYPE html>
<html>
<title>Error</title>
<body>
<h1>Something went wrong!</h1>
<p>The link you followed may be broken, or the page may have been removed.</p>
</body>
</html>
Since we’re using Thymeleaf template engine to display the custom error page. Add the Thymeleaf dependency in the pom.xml:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> <version>2.1.8.RELEASE</version> </dependency>
3. Disabling the Whitelabel Error Page
By setting the server.error.whitelabel.enabled property to false
in the application.properties file, we can disable the white label error page.
#Disable Whitelabel Error Page
server.error.whitelabel.enabled = false
Note: Add the right property matched with Spring Boot version:
Spring Boot Version >= 1.3 then use
server.error.whitelabel.enabled
= falseSpring Boot Version <= 1.2 then use
error.whitelabel.enabled
= false
We can achieve the same result by excluding the ErrorMvcAutoConfiguration
class to the main class:
@SpringBootApplication(exclude = { ErrorMvcAutoConfiguration.class })
public class Main {
public static void main(String[] args) {
SpringApplication.run(WhitelabelErrorPageApplication.class, args);
}
}