【问题标题】:Best use of mvc calls + thymeleaf最佳使用 mvc 调用 + thymeleaf
【发布时间】:2016-06-05 17:42:56
【问题描述】:

我应该直接使用来自 thymeleaf 模板的 DAO 类(例如 UserDao)吗?或者我应该使用包装器(例如;UserDaoController)来调用所有有趣的 UserDao?

我的控制器:

@RequestMapping(value = "/hibernate", method = RequestMethod.GET)
    public String listUsers(Model model) {
    List<User> listUsers = userDao.list();

    model.addAttribute("lista", listUsers);
    return "users/users";
    }

我正在考虑这个问题,因为我需要进行 2 次选择(例如打印每个用户的所有权限:用户 -> 角色 -> 权限),而我的最后一个百里香叶太糟糕了:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Hibernate</title>
</head>
<body>
    <h1>Hibernate - Users</h1>

    <body>
    <div align="center">
    <h1>Users List</h1>
    <h2><a href="/hibernate/new">New User</a></h2>

    <table border="1">
        <th>Id</th>
        <th>Username</th>
        <th>Email</th>
        <th>Roles</th>
        <th>Privileges</th>
        <th>Actions</th>

        <tr th:each="item : ${lista}">
            <td th:text="${item.id}"></td>
            <td th:text="${item.username}"></td>
            <td th:text="${item.email}"></td>
            <td>
                <ul th:each="role : ${item.getRoles()}">
                    <li th:text="${role.name}"></li>
                </ul>
            </td>
            <td>
                <span th:each="role : ${item.getRoles()}">
                    <ul th:each="privi : ${role.getPrivileges()}">
                        <li th:text="${privi.name}"></li>
                    </ul>
                </span>
            </td>
            <td>
                <a th:href="@{/hibernate/edit(id=${item.id})}">Edit</a>
                &nbsp;&nbsp;&nbsp;&nbsp;
                <a th:href="@{/hibernate/delete(id=${item.id})}">Delete</a>
            </td>
        </tr>
    </table>
    </div>
    </body>
</body>
</html>

谢谢, R.

【问题讨论】:

    标签: spring model-view-controller thymeleaf multiple-select


    【解决方案1】:

    谈到 MVC 模式,你不应该混合不同的层。 Thymeleaf 始终必须从控制器获取信息。

    在一个简单的 Web 应用程序中,服务层可以(但不应该)与控制器混合,但不能与模型混合。如果您使用这种模式是因为模型可能会更改或视图可能会更改,但您始终对自己的逻辑负责。

    最好的用法是:

    • HTML 到控制器(没有逻辑,只是请求)
    • 控制器到服务(逻辑)
    • 为 DAO 提供服务(对模型访问的抽象)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 2016-02-16
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      相关资源
      最近更新 更多