Flux和Mono是Reactor框架中的两个核心概念,用于处理响应式编程。而Freemarker是一种模板引擎,用于生成动态内容。正确地将Flux或Mono发送到Freemarker模板需要以下步骤:
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
<version>3.4.10</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
Flux<String> flux = Flux.just("Hello", "World");
Mono<String> mono = Mono.just("Hello");
<!DOCTYPE html>
<html>
<head>
<title>My Template</title>
</head>
<body>
<h1>${title}</h1>
<ul>
<#list items as item>
<li>${item}</li>
</#list>
</ul>
</body>
</html>
Configuration configuration = new Configuration(Configuration.VERSION_2_3_31);
configuration.setClassForTemplateLoading(getClass(), "/templates");
Template template = configuration.getTemplate("my-template.ftl");
Map<String, Object> dataModel = new HashMap<>();
dataModel.put("title", "My Template");
dataModel.put("items", flux.collectList().block());
StringWriter writer = new StringWriter();
template.process(dataModel, writer);
String htmlContent = writer.toString();
在上述代码中,我们首先创建了一个Freemarker的Configuration对象,并设置模板加载的方式。然后,通过getTemplate方法加载模板文件。接下来,我们创建一个Map对象,用于存储模板中的数据。在这个例子中,我们将Flux中的元素收集为列表,并将其存储在Map中的"items"键下。最后,我们使用模板的process方法将数据填充到模板中,并将结果写入StringWriter中。
System.out.println(htmlContent);
这样,我们就成功地将Flux或Mono发送到Freemarker模板,并生成了最终的HTML内容。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云