我有一个春天项目,设有百里香和百里香布局方言。
在这个项目中,我有一个控制器
@Controller
public class HomeController {
@RequestMapping(value="/", method = RequestMethod.GET)
public String showHome(Model model){
return "home";
}
@RequestMapping(value="/info", method = RequestMethod.GET)
public String showInfo(Model model){
return "info";
}
}
我也有布局
...
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<body>
<div layout:fragment="header">
dummy header
</div>
<div layout:fragment="content">
dummy contents
</div>
</body>
</html>
和两个观点:home.html和info.html有不同的独特内容
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorator="layout">
<body>
<div layout:fragment="content">
unique contents
</div>
</body>
</html>
和标题
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<body>
<div layout:fragment="header">
username is ${username}
</div>
</body>
</html>
我想在标题中打印用户名,而不将其作为控制器方法中模型的属性传递。那么,我可以在包含标题之前运行一些自定义java代码来查找用户名,而不管使用的控制器方法是什么?我有什么选择?
答案 0 :(得分:1)
如果您将Spring Security与Thymeleaf Spring Security模块结合使用,则可以执行以下操作:
<span class="user-info">
<small>Welcome,</small>
<span sec:authentication="principal">Username</span>
</span>
如果您不想使用Spring Security,可以编写一个自定义方言/处理器,为您插入用户名。