Как связать значение из формы в пользовательский объект JQuery AJAX Spring - PullRequest
0 голосов
/ 04 марта 2019

У меня есть форма, в которой пользователь вводит свои значения, и ему также приходится выбирать из двух выпадающих меню.Эти два раскрывающихся меню (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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...