I have a Spring Boot Application. I am trying to pass a variable to a HTML page but unfortunately I cannot seem to do it, on application start nothing is rendered except the static text: “WORLD”. My controller is as below:
@Controller public class IndexController { @RequestMapping(value = "/index", method = RequestMethod.GET) public String index(Model model) { model.addAttribute("message", "HELLO"); return "index"; } }
And my index.html:
<html> <body> <h1>${message}</h1> <h2>WORLD</h2> </body> </html>
I was looking for an answer and I found these articles:
How to serve .html files with Spring
How to serve html files with Spring
How to handle static content in Spring MVC?
These are useful examples, but in my project I don’t have files such as: mvc-dispatcher-servlet.xml, web.xml, or even the whole WEB-INF directory.
The files I have after creating a Spring MVC Project are in the screenshot below. Should I add the files mentioned in the above literature to fix this issue or what?
My Project view via IntelliJ IDEA:
My pom.xml file:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>offersmanager</groupId> <artifactId>webapp</artifactId> <version>1</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.2.6.RELEASE</version> </parent> <properties> <!-- Java version --> <java.version>1.8</java.version> <!-- Use UTF-8 sources encoding --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <!-- Local model --> <dependency> <groupId>${project.groupId}</groupId> <artifactId>model</artifactId> <version>${project.version}</version> </dependency> <!-- Spring boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <!-- MAIN CODE SETTINGS --> <sourceDirectory>src/main/java</sourceDirectory> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <!-- TEST CODE SETTINGS --> <testSourceDirectory>src/test/java</testSourceDirectory> <testResources> <testResource> <directory>src/test/resources</directory> </testResource> </testResources> </build> <repositories> <repository> <id>spring-releases</id> <url>https://repo.spring.io/libs-release</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-releases</id> <url>https://repo.spring.io/libs-release</url> </pluginRepository> </pluginRepositories> </project>
Advertisement
Answer
You’re using Thymeleaf as your templating language, and you should read the documentation for it. In Thymeleaf, to substitute a variable, you’ll use an attribute on the HTML tag, so something like this:
<html> <body> <h1 data-th-text="${message}">this gets replaced</h1> <h2>WORLD</h2> </body> </html>