如何使用 Thymeleaf 制作一个简单的 Java 应用程序(不使用 Spring)

FC_*_*rmi 5 java program-entry-point template-engine thymeleaf

我正在关注其网站上的官方 Thymeleaf 教程,目前正在执行模板引擎部分。

据我了解,我应该已经能够运行到目前为止编码的应用程序,但我绝对不知道如何运行它。根本没有main(String[] args)办法运行。

我尝试搜索其他教程,但它们都使用 Spring,这不是我现在正在寻找的。

有人知道我应该在哪里插入一个main(String[] args)方法来运行这个 Thymeleaf 应用程序并查看我的 HTML 模板吗?我不明白入口点在哪里或应该在哪里。

如果这个问题听起来很愚蠢,我提前表示歉意,并感谢您以后的回复。


编辑:

到目前为止,在遵循教程时我编写了 3 个 Java 文件:

所以我想到编写一个像这样的 main 方法: Main class contains main(String[] args) method

但我不知道如何正确实例化servletContext,而且我什至不确定一旦完成此操作是否一切都会正常。

Mah*_*zad 5

借用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>
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果您使用 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")
    }
    
    Run Code Online (Sandbox Code Playgroud)

将模板 HTML 文件放置在类路径的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>
Run Code Online (Sandbox Code Playgroud)

如果您使用 Java 语言,则程序代码如下:

import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
import java.time.LocalDate;

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", "Bunny");
        context.setVariable("date", LocalDate.now().toString());

        var templateEngine = new TemplateEngine();
        templateEngine.setTemplateResolver(resolver);

        var result = templateEngine.process("index", context);
        System.out.println(result);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您使用Kotlin 语言,下面是程序代码:

import org.thymeleaf.TemplateEngine
import org.thymeleaf.context.Context
import org.thymeleaf.templatemode.TemplateMode
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver
import java.time.LocalDate

fun main() {
    val resolver = ClassLoaderTemplateResolver().apply {
        templateMode = TemplateMode.HTML
        characterEncoding = "UTF-8"
        prefix = "/templates/"
        suffix = ".html"
    }
    val context = Context().apply {
        setVariable("name", "Bunny")
        setVariable("date", LocalDate.now().toString())
    }
    val templateEngine = TemplateEngine().apply {
        setTemplateResolver(resolver)
    }
    val result = templateEngine.process("index", context)
    println(result)
}
Run Code Online (Sandbox Code Playgroud)


mkl*_*epa 0

您可以在您创建的任何类中创建 main 方法,然后创建您需要的 Thymeleaf 对象。 这可能有帮助