怎样用 Boot 与 Thymeleaf 构建服务端页面?
查看完整题解
参考回答
直接回答
控制器准备专用页面模型,返回逻辑模板名,Thymeleaf渲染HTML,静态资源承担交互和样式;Boot可提供匹配的模板集成。页面复杂度还需要清楚组件、布局与表单错误处理,不能把业务查询和权限判断全部藏进模板表达式里。
讲清原理
普通文本使用转义输出;未转义HTML只用于经过明确清洗和信任边界处理的内容。表单仍需服务端验证、CSRF及资源授权,浏览器控件约束不是最终保障。
公共布局和片段可减少重复,静态资源采用合适版本缓存,动态与个性化页面不应随意公共缓存。模板缓存设置也应区分开发与生产,并验证发布后资源引用一致。
例子与易错点
显示用户昵称时测试中文、空值与含尖括号文本;编辑失败回到原表单并保留安全输入和错误提示。不要把隐藏按钮当作授权,直接请求接口仍必须被服务端正确检查。
以下为 Java 21 类成员示例,放入同一外部类中使用,依赖 Boot4.1.2 / Framework7.0.10。使用项目已有Thymeleaf3.1.5及其spring6集成制品,实际配合Framework7运行;只测模板引擎,不冒充Boot Web整合验收。
static String renderName(String name) {
var resolver=new org.thymeleaf.templateresolver.StringTemplateResolver();
resolver.setTemplateMode(org.thymeleaf.templatemode.TemplateMode.HTML);
var engine=new org.thymeleaf.spring6.SpringTemplateEngine();
engine.setTemplateResolver(resolver);
var context=new org.thymeleaf.context.Context(java.util.Locale.CHINA);
context.setVariable("name",name);
return engine.process("<p th:text=\"${name}\">name</p>",context);
}
相关题:第 28 题、第 34 题、第 46 题。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。