The problem:
Using Spring 4, I am getting this when visiting a webpage
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Fri Aug 15 16:41:29 BST 2014
There was an unexpected error (type=Not Found, status=404).
What I have:
I have this Main class:
// src/main/java/abc/Main.java
package abc;
import abc.web.WebAppConfig;
import org.springframework.boot.SpringApplication;
public class Main {
public static void main(String[] args) {
SpringApplication.run(WebAppConfig.class);
}
}
Then I have this WebAppConfig.class (currently with just some configuration annotations):
// src/main/java/abc/web/WebAppConfig.java
package abc.web;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
@ComponentScan
@EnableAutoConfiguration
public class WebAppConfig {
}
And this controller HomeController.java:
// src/main/java/abc/web/HomeController.java
package abc.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import static org.springframework.web.bind.annotation.RequestMethod.GET;
@Controller
@RequestMapping("/")
public class HomeController {
@RequestMapping(method = GET)
public String home() {
System.out.println("HELLO !!");
return "home";
}
}
The HELLO !! shows up in the logs.
And finally I have a html file at src/main/java/abc/webapp/home.html
, with just some html tags including a p
tag with Hello, world!
.
The question:
I understand that I am missing the way of rendering the view, but I searched a couple of questions on stackoverflow and haven't find a solution yet.
Can someone explain how can I get Spring to render a webpage ? What am I missing ?
Thanks in advance :)
The simplest answer to the "how can I get Spring Boot to render a webpage?" question is: place your home.html file inside
src/main/resources/static/
folder. The page will be available under the/home.html
URL.More details in the documentation.
Spring Boot will automatically use and configure Thymeleaf as the view rendering engine, as long as it's on the classpath. To put it on the classpath use
in the gradle build file.
If you are using maven add the dependency:
In your case in order to display the
home.html
view (in accordance to the controller you are using), you need to place it under/resources/templates
.For a complete example, check out this guide.
You probably not configured template engine and view resolver. See example with thymeleaf here http://www.thymeleaf.org/doc/thymeleafspring.html As thymeleaf template is a valid HTML code and vice verse you can use it.