如何使用 Thymeleaf 只制作一个简单的 Java 应用程序(没有 Spring)
How to use Thymeleaf to make only a simple Java app (without Spring)
我正在关注 its website and I'm currently on the section Executing the template engine 上的 Thymeleaf 官方教程。
据我了解,到目前为止,我应该已经能够 运行 编码该应用程序,但我完全不知道如何 运行 它。 运行 根本没有 main(String[] args)
方法。
我尝试搜索其他教程,但他们都使用 Spring,这不是我现在要找的。
有人知道我应该在哪里向 运行 这个 Thymeleaf 应用程序插入 main(String[] args)
方法并查看我的 HTML 模板吗?我不明白入口点在哪里或应该在哪里。
如果这个问题听起来很愚蠢,我提前道歉,感谢您以后的回复。
编辑:
到目前为止,按照教程我写了 3 Java 个文件:
- GTVGApplication class
- IGTVGController 界面
- HomeController class
- home.html待显示模板
所以我想到了这样写一个main方法:
Main class containing main(String[] args) method
但我不知道如何正确实例化 servletContext,而且我什至不确定一旦完成此操作是否一切正常。
您可以在您创建的任何 class 中创建您的主要方法,然后创建您需要的 Thymeleaf 对象。
This might help
借鉴 this comment on GitHub,这里是如何在一个简单的应用程序中使用 Thymeleaf。
首先,添加 Thymeleaf 库(依赖项):
- 如果您使用的是 Maven,请将此添加到您的 pom.xml 文件中:
<dependencies>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.15.RELEASE</version>
</dependency>
<!-- Add this if you don't like seeing messages in stdout from SLF4J -->
<!--
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.36</version>
</dependency>
-->
</dependencies>
- 如果您使用的是 Gradle,请将其添加到您的 build.gradle[.kts] 文件中:
dependencies {
implementation("org.thymeleaf:thymeleaf:3.0.15.RELEASE")
// Add this if you don't like seeing messages in stdout from SLF4J
// implementation("org.slf4j:slf4j-nop:1.7.36")
}
将模板 HTML 文件放在 classpath 的 templates/ 子目录中(例如 src/main/resources/templates /).
src/main/resources/templates/index.html:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Sample Thymeleaf template</title>
</head>
<body>
<p th:text="|Hello, ${name}!|">Hello, user!</p>
<p th:text="|Today is ${date}.|">Today is ...</p>
</body>
</html>
如果您使用 Java 语言,这里是程序代码:
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
// From Java 10, you can use var instead of declaring the type explicitly
var resolver = new ClassLoaderTemplateResolver();
resolver.setTemplateMode(TemplateMode.HTML);
resolver.setCharacterEncoding("UTF-8");
resolver.setPrefix("/templates/");
resolver.setSuffix(".html");
var context = new Context();
context.setVariable("name", "Land");
context.setVariable("date", LocalDateTime.now().toString());
var templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(resolver);
var result = templateEngine.process("index", context);
System.out.println(result);
}
}
这里是程序代码,如果你使用Kotlin language:
import org.thymeleaf.TemplateEngine
import org.thymeleaf.context.Context
import org.thymeleaf.templatemode.TemplateMode
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver
import java.time.LocalDateTime
fun main() {
val resolver = ClassLoaderTemplateResolver().apply {
templateMode = TemplateMode.HTML
characterEncoding = "UTF-8"
prefix = "/templates/"
suffix = ".html"
}
val context = Context().apply {
setVariable("name", "Lind")
setVariable("date", LocalDateTime.now().toString())
}
val templateEngine = TemplateEngine().apply {
setTemplateResolver(resolver)
}
val result = templateEngine.process("index", context)
println(result)
}
我正在关注 its website and I'm currently on the section Executing the template engine 上的 Thymeleaf 官方教程。
据我了解,到目前为止,我应该已经能够 运行 编码该应用程序,但我完全不知道如何 运行 它。 运行 根本没有 main(String[] args)
方法。
我尝试搜索其他教程,但他们都使用 Spring,这不是我现在要找的。
有人知道我应该在哪里向 运行 这个 Thymeleaf 应用程序插入 main(String[] args)
方法并查看我的 HTML 模板吗?我不明白入口点在哪里或应该在哪里。
如果这个问题听起来很愚蠢,我提前道歉,感谢您以后的回复。
编辑:
到目前为止,按照教程我写了 3 Java 个文件:
- GTVGApplication class
- IGTVGController 界面
- HomeController class
- home.html待显示模板
所以我想到了这样写一个main方法: Main class containing main(String[] args) method
但我不知道如何正确实例化 servletContext,而且我什至不确定一旦完成此操作是否一切正常。
您可以在您创建的任何 class 中创建您的主要方法,然后创建您需要的 Thymeleaf 对象。 This might help
借鉴 this comment on GitHub,这里是如何在一个简单的应用程序中使用 Thymeleaf。
首先,添加 Thymeleaf 库(依赖项):
- 如果您使用的是 Maven,请将此添加到您的 pom.xml 文件中:
<dependencies> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf</artifactId> <version>3.0.15.RELEASE</version> </dependency> <!-- Add this if you don't like seeing messages in stdout from SLF4J --> <!-- <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-nop</artifactId> <version>1.7.36</version> </dependency> --> </dependencies>
- 如果您使用的是 Gradle,请将其添加到您的 build.gradle[.kts] 文件中:
dependencies { implementation("org.thymeleaf:thymeleaf:3.0.15.RELEASE") // Add this if you don't like seeing messages in stdout from SLF4J // implementation("org.slf4j:slf4j-nop:1.7.36") }
将模板 HTML 文件放在 classpath 的 templates/ 子目录中(例如 src/main/resources/templates /).
src/main/resources/templates/index.html:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Sample Thymeleaf template</title>
</head>
<body>
<p th:text="|Hello, ${name}!|">Hello, user!</p>
<p th:text="|Today is ${date}.|">Today is ...</p>
</body>
</html>
如果您使用 Java 语言,这里是程序代码:
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
// From Java 10, you can use var instead of declaring the type explicitly
var resolver = new ClassLoaderTemplateResolver();
resolver.setTemplateMode(TemplateMode.HTML);
resolver.setCharacterEncoding("UTF-8");
resolver.setPrefix("/templates/");
resolver.setSuffix(".html");
var context = new Context();
context.setVariable("name", "Land");
context.setVariable("date", LocalDateTime.now().toString());
var templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(resolver);
var result = templateEngine.process("index", context);
System.out.println(result);
}
}
这里是程序代码,如果你使用Kotlin language:
import org.thymeleaf.TemplateEngine
import org.thymeleaf.context.Context
import org.thymeleaf.templatemode.TemplateMode
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver
import java.time.LocalDateTime
fun main() {
val resolver = ClassLoaderTemplateResolver().apply {
templateMode = TemplateMode.HTML
characterEncoding = "UTF-8"
prefix = "/templates/"
suffix = ".html"
}
val context = Context().apply {
setVariable("name", "Lind")
setVariable("date", LocalDateTime.now().toString())
}
val templateEngine = TemplateEngine().apply {
setTemplateResolver(resolver)
}
val result = templateEngine.process("index", context)
println(result)
}