Вот код проверки кода, который вы публикуете:
Соглашения об именах : Вам следует взглянуть на Соглашения об именах Java , атрибуты класса должны следовать за верблюдомВ синтаксисе регистра не используется подчеркивание.
Выше не требуется влиять на схему базы данных, так как вы можете использовать @Column
для сопоставления поля таблицы и атрибута класса, например:
@Id
@Column(name="dept_id")
private int id;
@Column(name="dept_name")
private String name;
@Column(name="dept_order")
private String Order;
Обратите внимание, заказ - это ключевое слово во многих базах данных, поэтому вам может потребоваться изменить его.
Условные обозначения : Я бы посоветовал вам взглянуть на Restful API Design , тогда вы можете понять, как структурировать ваше приложение для доступа к определенным ресурсам.
В соответствии с соглашениями у вас есть один ресурс (отдел), и вам понадобятся эти URI:
- URI: GET / отдел - / отдел/list.html - Отображение таблицы отдела
- URI: GET / отдел / {id} - / отдел / show.html - Отображение отделас подробной информацией (таблица контактов).
Например, у вас есть GET /departments_list
для отображения списка отделов, вместо этого вам нужно изменить его на GET /departments
, а шаблон должен быть назван list.html.
@GetMapping("/departments")
public String listDepartments(Model model) {
List<Department> departments = departmentService.findAll();
model.addAttribute("departments",departments);
return "/departments/list"; // Your current thymeleaf template
}
Тогда вам потребуется GET /departments/{id}
, чтобы отобразить сведения об отделе, включая список контактов.
Таким образом, в вашем шаблоне списка отделов вы должны создать ссылку, например:
<a th:href="@{/home/contact/{departmentId}(departmentId=${tempDepartment.dept_id})}"
class="btn btn-info btn-sm">View</a>
Обратите внимание, вам нужно указать URL-адрес, например /home/contact/{departmentId}
, чтобы tymeleaf мог заменить свойство id, в противном случае вы получите его в качестве параметра.
На вашем контроллере необходимо обновить отображение контактов, чтобы включить идентификатор в качестве переменной пути:
@GetMapping("/departments/{id}")
public String listContacts(@PathVariable("id") int theId, Model theModel) {
Department department = departmentService.findById(theId);
theModel.addAttribute("department",department);
return "/departments/show";
}
Если ваш класс Отдела загружает контакты с нетерпением, вы можете получить доступ к списку вваш интерфейс в шаблоне show.html
.
<tr th:each="contact : ${department.contacts}">
<td th:text="${contact.contact_id}" />
<td th:text="${contact.emp_name}" />
<td th:text="${contact.mobile}" />
<td th:text="${contact.landline_office}" />
</tr>
Кроме того, не забудьте подключить ContactService
к вашему DemoController
.
public DemoController(DepartmentService departmentService, ContactService contactService) {
this.departmentService = departmentService;
this.contactService = contactService;
}