2016-06-05 3 views
0

thymeleaf 템플릿의 DAO 클래스 (예 : UserDao)를 직접 사용해야합니까? 또는 UserDao에 대한 모든 흥미로운 호출과 함께 래퍼 (예 : UserDaoController)를 사용해야합니까?MVC 호출 + 타이머의 최적 사용

내 컨트롤러 :

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

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

I (예 : 인쇄 각 사용자의 모든 권한에 대해 : 사용자 -> 역할 -> 권한)이 선택을 할 필요가 있기 때문에 내가 이것에 대해 생각하고, 내 마지막 thymeleaf 끔찍한 :

<!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.

답변

0

MVC 패턴에 대해 이야기, 당신은 다른 계층을 혼합해서는 안된다. Thymeleaf는 항상 컨트롤러로부터 정보를 얻어야합니다.

간단한 웹 응용 프로그램에서 서비스 계층은 컨트롤러와 혼합 될 수는 있지만 모델과는 혼합 될 수는 없습니다. 모델이 변경 될 수 있거나보기가 변경 될 수 있기 때문에 이러한 유형의 패턴을 사용하는 경우에는 항상 논리에 책임이 있습니다.

가장 좋은 사용법은 다음과 같습니다

  • (단지 요청 어떤 논리) 컨트롤러 서비스 (논리) DAO에
  • 서비스에
  • 컨트롤러에 HTML
(추상화는 액세스 모델)