У меня есть форма, в которой пользователь вводит свои значения, и ему также приходится выбирать из двух выпадающих меню.Эти два раскрывающихся меню (Country и CompanyType) должны представлять собой два разных объекта, которые связаны с пользователем.Моя проблема в том, что в форме эти два значения являются текстовыми.Поэтому, когда я вызываю свою функцию ajax, которая вызывает метод post-spring, эти два значения равны нулю.Как я могу связать эти два значения?Заранее спасибо за помощь!Ниже код, который у меня есть.
Мой объект пользователя
@Entity
@Table(name = "user")
public class User {
@Column(name = "name")
private String name;
@Column(name = "last_name")
private String lastName;
@ManyToOne
@JoinColumn(name = "country", foreignKey = @ForeignKey(name = "FK_country"), referencedColumnName = "name")
@NotNull(message = "*Please select your country")
private Country country;
@ManyToOne
@JoinColumn(name = "company_type", foreignKey = @ForeignKey(name = "FK_company_type"), referencedColumnName = "id")
@NotNull(message = "*Please select your company type")
private CompanyType companyType;
//Getter, setter ecc
}
Форма
<form id="registrationForm" th:object="${user}" method="post" onsubmit="return false;">
<div>
<input id="name" type="text" th:field="*{name}" placeholder="Name"/>
</div>
<div>
<input id="lastname" type="text" th:field="*{lastName}" placeholder="Lastname"/>
</div>
<div class="form-group">
<select id="country" th:field="*{country.name}">
<option value="" selected>Select Country</option>
<option th:each="country : ${countries}" th:value="${country.name}" th:text="${country.name}"></option>
</select>
</div>
<div class="form-group">
<select id="companyType" th:field="*{companyType.id}">
<option value="" selected>Select Company Type</option>
<option th:each="companyType : ${companyTypes}" th:value="${companyType.id}" th:text="${companyType.type}"></option>
</select>
</div>
<div>
<button id="register" type="submit" class="btn btn-3 btn-rounded ml-auto" onclick="saveUser();">Register</button>
</div>
</form>
Аякс вызов
function saveUser(){
var country = $("#companyType option:selected").val();
var companyType = $("#country option:selected").val();
$.ajax({
type: "post", // method attribute of form
url: "registerUser", // action attribute of form
data : {
"name" : $("#name").val(),
"lastName" : $("#lastname").val(),
"companyType" : companyType,
"country" : country
},
success: function(data) {
console.log(data);
return data;
},
error: function(data) {
console.log(data);
return data;
}
});
}
Мой restcontroller
@PostMapping(value = "/registerUser")
public void createNewUser(User user, BindingResult bindingResult) {
userService.saveUser(user);
}