--Verwenden Sie die Moustache Template Engine mit Spring Boot --Diese Umgebung zur Überprüfung von Vorgängen: Java 14 (AdoptOpenJDK 14.0.2 + 12) + Spring Boot 2.3.2 + Gradle 6.5.1 + macOS Catalina
├── build.gradle
└── src
└── main
├── java
│ └── com
│ └── example
│ ├── SampleController.java
│ └── SampleData.java
└── resources
├── application.properties
└── templates
├── error
│ ├── 4xx.html
│ └── 5xx.html
└── my_template.html
build.gradle
Führen Sie den Spring Boot Starter Moustache ein.
plugins {
id 'org.springframework.boot' version '2.3.2.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1'
sourceCompatibility = '14'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-mustache'
implementation 'org.springframework.boot:spring-boot-starter-web'
}
[Spring-Boot-Starter-Moustache-2.3.2.RELEASE.pom](https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-starter-mustache/2.3.2.RELEASE/ Wenn Sie sich den Inhalt von Spring-Boot-Starter-Moustache-2.3.2.RELEASE.pom ansehen, können Sie sehen, dass Spring Boot Starter Moustache JMustache 1.15 der Moustache-Bibliothek verwendet.
src/main/resources/application.properties
Nehmen Sie Einstellungen für Moustache vor. Hier wird spring.mustache.suffix so festgelegt, dass eine Datei mit der Erweiterung html als Vorlagendatei behandelt wird.
#Gibt an, ob das Zwischenspeichern von Vorlagen aktiviert werden soll(Standardwert: false)
spring.mustache.cache=false
#Vorlagencodierung(Standardwert: UTF-8)
spring.mustache.charset=UTF-8
#Präfix auf Vorlagennamen angewendet(Standardwert: classpath:/templates/)
spring.mustache.prefix=classpath:/templates/
#Suffix auf Vorlagennamen angewendet(Standardwert: .mustache)
spring.mustache.suffix=.html
Es gibt andere Einstellungselemente, also bei Bedarf [Eigenschaftsliste der Spring Boot-Anwendung \ -Document](https://spring.pleiades.io/spring-boot/docs/current/reference/html/appendix-application-properties] .html) usw. sollte erwähnt werden.
src/main/java/com/example/SampleController.java
Controller-Klasse.
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;
@SpringBootApplication
@Controller
public class SampleController {
public static void main(String[] args) {
SpringApplication.run(SampleController.class, args);
}
@GetMapping("/mypage")
public ModelAndView mypage() {
SampleData sampleData = new SampleData();
ModelAndView mav = new ModelAndView();
mav.setViewName("my_template"); //Name der Vorlagendatei
mav.addObject("mydata", sampleData); //Datenobjekt setzen
return mav;
}
@GetMapping("/myerror")
public ModelAndView myerror() {
throw new RuntimeException("Fehler auslösen");
}
}
src/main/java/com/example/SampleData.java
Ein Datenobjekt, das in eine Moustache-Vorlage eingebettet werden soll.
package com.example;
import java.util.List;
import java.util.Map;
public class SampleData {
public String foo = "foo";
public String getBar() {
return "bar";
}
public String[] strings = {"S1", "S2", "S3"};
public List list = List.of("L1", "L2", "L3");
public Map map = Map.of("key1", "value1", "key2", "value2", "key3", "value3");
}
src/main/resources/templates/my_template.html
Schnurrbart-Vorlagendatei zur Anzeige des Inhalts von Datenobjekten.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{#mydata}}
foo: {{foo}}<br>
getBar(): {{bar}}<br>
{{/mydata}}
<br>
strings:<br>
{{#mydata.strings}}
value: {{.}}<br>
{{/mydata.strings}}
<br>
list:<br>
{{#mydata.list}}
value: {{.}}<br>
{{/mydata.list}}
<br>
map:<br>
{{#mydata.map}}
{{key1}}, {{key2}}, {{key3}}
{{/mydata.map}}
</body>
</html>
src/main/resources/templates/error/4xx.html
Schnurrbart-Vorlagendatei für 4xx-Serienfehler. Daten wie Fehlerinformationen können nach Bedarf eingebettet werden.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>4xx</title>
</head>
<body>
<h1>4xx</h1>
<div>timestamp: {{#timestamp}}{{.}}{{/timestamp}}</div>
<div>status: {{#status}}{{.}}{{/status}}</div>
<div>error: {{#error}}{{.}}{{/error}}</div>
<div>exception: {{#exception}}{{.}}{{/exception}}</div>
<div>message: {{#message}}{{.}}{{/message}}</div>
<div>errors: {{#errors}}{{.}}{{/errors}}</div>
<div>trace: {{#trace}}{{.}}{{/trace}}</div>
<div>path: {{#path}}{{.}}{{/path}}</div>
</body>
</html>
src/main/resources/templates/error/5xx.html
Schnurrbart-Vorlagendatei für den Fall, dass ein 5xx-Serienfehler auftritt. Daten wie Fehlerinformationen können nach Bedarf eingebettet werden.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>5xx</title>
</head>
<body>
<h1>5xx</h1>
<div>timestamp: {{#timestamp}}{{.}}{{/timestamp}}</div>
<div>status: {{#status}}{{.}}{{/status}}</div>
<div>error: {{#error}}{{.}}{{/error}}</div>
<div>exception: {{#exception}}{{.}}{{/exception}}</div>
<div>message: {{#message}}{{.}}{{/message}}</div>
<div>errors: {{#errors}}{{.}}{{/errors}}</div>
<div>trace: {{#trace}}{{.}}{{/trace}}</div>
<div>path: {{#path}}{{.}}{{/path}}</div>
</body>
</html>
Greifen Sie mit Curl zu und überprüfen Sie das Antwortergebnis.
Das Datenobjekt ist in die Moustache-Vorlage eingebettet und wird ausgegeben.
$ curl http://localhost:8080/mypage
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
foo: foo<br>
getBar(): bar<br>
<br>
strings:<br>
value: S1<br>
value: S2<br>
value: S3<br>
<br>
list:<br>
value: L1<br>
value: L2<br>
value: L3<br>
<br>
map:<br>
value1, value2, value3
</body>
</html>
Fehlerinformationen werden eingebettet und in die Moustache-Vorlagendatei ausgegeben, wenn ein Fehler der 4xx-Serie auftritt.
$ curl --include -H "accept: text/html" http://localhost:8080/
HTTP/1.1 404
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: text/html;charset=UTF-8
Content-Language: ja-JP
Content-Length: 321
Date: Fri, 07 Aug 2020 07:55:53 GMT
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>4xx</title>
</head>
<body>
<h1>4xx</h1>
<div>timestamp: Fri Aug 07 16:55:53 JST 2020</div>
<div>status: 404</div>
<div>error: Not Found</div>
<div>exception: </div>
<div>message: </div>
<div>errors: </div>
<div>trace: </div>
<div>path: /</div>
</body>
</html>
Die Fehlerinformationen werden eingebettet und in die Moustache-Vorlagendatei ausgegeben, wenn ein 5xx-Systemfehler auftritt.
$ curl --include -H "accept: text/html" http://localhost:8080/myerror
HTTP/1.1 500
Content-Type: text/html;charset=UTF-8
Content-Language: ja-JP
Content-Length: 340
Date: Fri, 07 Aug 2020 07:55:47 GMT
Connection: close
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>5xx</title>
</head>
<body>
<h1>5xx</h1>
<div>timestamp: Fri Aug 07 16:55:47 JST 2020</div>
<div>status: 500</div>
<div>error: Internal Server Error</div>
<div>exception: </div>
<div>message: </div>
<div>errors: </div>
<div>trace: </div>
<div>path: /myerror</div>
</body>
</html>
Spring Boot "How to use" Anleitung \ -Japanische Übersetzung des offiziellen Dokuments
Wenn Sie Moustache verwenden, gibt es auch einen MoustacheViewResolver mit dem Namen "mustacheViewResolver". Suchen Sie nach Ressourcen, indem Sie den Ansichtsnamen in Präfixe und Suffixe einfügen. Das Präfix lautet spring.mustache.prefix und das Suffix ist spring.mustache.suffix. Die Präfix- und Suffixwerte sind standardmäßig "Klassenpfad: / templates /" bzw. ".mustache". Sie können MoustacheViewResolver überschreiben, indem Sie eine Bean mit demselben Namen angeben.
Recommended Posts