I'm trying to build a form using thymeleaf, my entity includes Collection (List) of objects. I'm struggling to build a proper form for this case.
This is my entity:
@Entity
public class Owner {
@Id
@GeneratedValue
private int id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
private List<Phone> phones;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
private List<Pet> pets;
//getterss and setters
this is the Pet.class
@Entity
public class Pet {
@Id
@GeneratedValue
private int id;
@Column(name = "pet_name")
private String petName;
@ManyToOne
@JoinColumn(name = "owner_Id")
private Owner owner;
//getters and setters
and this is my html file for building the form:
<!DOCTYPE html>
<html xmlns:th="http:/www.thymealeaf.org">
<head>
<meta charset="ISO-8859-1"></meta>
<title>Add new owner to database</title>
</head>
<body>
<div id="form">
<form th:action="@{/addOwner.do}" th:object="${Owner}" method="post">
<label for="firstName">First Name: </label>
<input type="text" th:field="*{firstName}" />
<label for="lastName">Last Name:</label>
<input type="text" th:field="*{lastName}" />
<!-- Here is the core problem -->
<label for="pets">Pet Name: </label>
<input type="text" th:each="pet : *{pets}"/>
<input type="submit" value="add" />
</form>
</div>
</body>
so I'm struggling with this:
<!-- Here is the core problem -->
<label for="pets">Pet Name: </label>
<input type="text" th:each="pet : *{pets}"/>
my problem is, I dont know how to access Pet object in List collection inside of the form so that i could make an input of petName property.
//edit or maybe there is a different way to do this? the obvious way is getting a string from form and then in controller building the string to pet name before adding the object to database?
can you try this and let me know if this worked for you
<div th:each="pet, stat : *{pets}">
<input type="text" th:field="*{pet[__${stat.index}__].petName}" />
</div>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With