Thymeleaf转换语句,包括所有情况

时间:2018-12-29 11:22:29

标签: spring-boot thymeleaf

我正在做我的第一个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>

为什么从第一个模板进行的切换不像第二个模板中的切换?为了能够为每种类型的用户提供个性化菜单,我应该在第一个模板中进行哪些更改?谢谢!

0 个答案:

没有答案