我正在做我的第一个Spring MVC项目,但遇到了问题。我的应用程序中有3种类型的用户:管理员,员工和客户。根据用户的类型,我想为每个用户提供特定的菜单类型。我尝试在我的百里香模板中使用switch语句,但是每种情况都包含在输出中,我不明白为什么。
这是控制器中我方法的代码:
@RequestMapping(value = "list/{roleId}", method = RequestMethod.GET)
public String listFood(Model model, @PathVariable int roleId){
model.addAttribute("title", "Available Foods");
model.addAttribute("roleId", roleId);
model.addAttribute("foods", foodDao.findAll());
return "food/list";
}
这是Thymeleaf模板中的代码(每个片段将包含在结果页面中):
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org/">
<head th:replace="fragments :: head"></head>
<body class="container">
<h1 th:text="${title}">Food</h1>
<div th:switch="${roleId}">
<p th:case="0"><nav th:replace="admin-fragments :: navigation"></nav></p>
<p th:case="1"><nav th:replace="employee-fragments :: navigation"></nav></p>
<p th:case="2"><nav th:replace="customer-fragments :: navigation"></nav></p>
</div>
</body>
</html>
但是,如果我将模板更改为以下模板,则结果页面中将仅包含正确的大小写。
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org/">
<head th:replace="fragments :: head"></head>
<body class="container">
<h1 th:text="${title}">Food</h1>
<div th:switch="${roleId}">
<p th:case="0">User is an administrator</p>
<p th:case="1">User is an employee</p>
<p th:case="2">User is a customer</p>
</div>
</body>
</html>
为什么从第一个模板进行的切换不像第二个模板中的切换?为了能够为每种类型的用户提供个性化菜单,我应该在第一个模板中进行哪些更改?谢谢!