<!--
Beetl是一款高性能的HTML模板渲染引擎
另外需要注意,模板引擎在渲染完成页面后,是不会执行页面中的JS代码的
因此,如果后台想要将HTML模板转成Pdf,就不要想着用JS来改变HTML元素了
-->
<dependencies>
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl</artifactId>
<version>2.7.21</version>
</dependency>
</dependencies>
import org.beetl.core.Configuration;
import org.beetl.core.GroupTemplate;
import org.beetl.core.Template;
import org.beetl.core.resource.ClasspathResourceLoader;
import java.io.IOException;
import java.util.Map;
/**
* Description of this class.
*
* @author NightDW 2022/2/26 0:23
*/
@SuppressWarnings("All")
public class BeetlUtil {
private static final GroupTemplate GROUP_TEMPLATE;
static {
try {
GROUP_TEMPLATE = new GroupTemplate(new ClasspathResourceLoader(), Configuration.defaultConfiguration());
} catch (IOException e) {
throw new RuntimeException("BeetlUtil初始化失败!");
}
}
public static String renderHtmlTemplateFromClassPath(String path, Map<String, Object> param) {
Template template = GROUP_TEMPLATE.getTemplate(path);
template.binding(param);
return template.render();
}
public static String renderHtmlTemplateFromClassPath(String path, String key, Object value) {
Template template = GROUP_TEMPLATE.getTemplate(path);
template.binding(key, value);
return template.render();
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>学生二维码</title>
</head>
<body>
<!--
Beetl的语法如下所示,代码写在<%%>标签的中间
departmentList参数是由Java代码传到本模板的
在这里我们对departmentList进行遍历,在遍历的过程中对HTML文本进行拼接
调用print(str)方法,Beetl将会将目标文本str渲染到最终的HTML页面中
-->
<%
for (department in departmentList) {
var departmentContainerStr = "";
departmentContainerStr = departmentContainerStr + "<div class='department-container'>";
departmentContainerStr = departmentContainerStr + "<h3>" + department.name + "</h3><hr/>";
for (student in department.userList) {
departmentContainerStr = departmentContainerStr + "<div class='qrCodeFrame'>";
departmentContainerStr = departmentContainerStr + "<div class='code'><" + "img width='110' height='110' src='data:image/png;base64," + student.qrCodeBase64 + "' style='display: block;'/></div><br/><div class='name'>[学生] " + student.name + "</div><br/><div class='clazz'>班级:" + student.className + "</div><br/><div class='phone'>学号:" + student.studentCode + "</div>";
departmentContainerStr = departmentContainerStr + "</div>";
}
departmentContainerStr = departmentContainerStr + "</div>";
print(departmentContainerStr);
}
%>
</body>
</html>