Thymeleaf передать в option список объектов
Есть класс Equipment, у которого параметр status это объект Status. В форме создания/редактирования Equipment мне нужно показать выпадающий список со всеми возможными Status, а в случае редактирования с выбранным текущим.
@Table(name = "equipments")
public class Equipment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "serial-number")
private String serialNumber;
@Column(name = "brand")
private String brand;
@Column(name = "model")
private String model;
@Column(name = "type")
private String type;
@ManyToOne
@JoinColumn(name="status")
private Status status;
@Column(name = "purchase-date")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate purchaseDate;
@Column(name = "purchase-cost")
private Long purchaseCost;
@Column(name = "amortization-period")
private Long amortizationPeriod;
Контроллеры:
public String showNewEquipmentForm(Model model) {
Equipment equipment = new Equipment();
model.addAttribute("equipment", equipment);
return "new_equipment";
}
@GetMapping("/statuses")
public String viewHomePage(Model model){
model.addAttribute("listStatuses", statusService.getAllStatuses());
return "statuses";
}
Форма:
<form action="#" th:action="@{/equipments/saveEquipment}" th:object="${equipment}"
method="POST">
<input type="text" th:field="*{serialNumber}"
placeholder="Серийный номер" class="form-control mb-4 col-4">
<input type="text" th:field="*{brand}"
placeholder="Бренд" class="form-control mb-4 col-4">
<input type="text" th:field="*{model}"
placeholder="Модель" class="form-control mb-4 col-4">
<input type="text" th:field="*{type}"
placeholder="Тип" class="form-control mb-4 col-4">
<select th:field="*{status}" id="status">
<option th:each="status : ${statuses}"
th:value="${status.getId()}"
th:name="${status}"
th:text="${status.getName()}">
</option>
</select>
<input type="text" th:field="*{purchaseDate}"
placeholder="Дата закупки" class="form-control mb-4 col-4">
<input type="text" th:field="*{purchaseCost}"
placeholder="Стоимость закупки" class="form-control mb-4 col-4">
<input type="text" th:field="*{amortizationPeriod}"
placeholder="Период амортизации" class="form-control mb-4 col-4">
<button type="submit" class="btn btn-info col-2">Сохранить</button>
</form>
В таком варианте список пустой. Пробовал заменить getId на id и getName на name. Также пробовал использовать атрибут listStatuses. Список всегда пустой.
Пробовал и так:
<select th:#object="${status}" id="status">
<option th:each="status : ${listStatuses}"
th:value="${status.id}"
th:name="*{status}"
th:text="${status.name}">
</option>
</select>