Проблема с kendo datepicker в Spring MVC

#spring #jsp #kendo-ui

#весна #jsp #kendo-пользовательский интерфейс

Вопрос:

У меня есть форма для добавления учеников. Для даты рождения я хочу использовать kendo ui datepicker, но я не знаю, как контроллер выполняет привязку к модели. Если атрибут name средства выбора даты совпадает с элементом class, то я получаю следующую ошибку: The request sent by the client was syntactically incorrect. если атрибут name средства выбора даты отличается, то при нажатии кнопки save учащийся вставляется в базу данных, но при этом поле date of birth имеет значение null. Ниже приведено содержимое файла jsp, контроллера и класса Student. Что я делаю не так?

файл jsp

 <div id="addStudent" class="space">
<div class="page-title">Add student</div>
<form:form commandName="addForm" method="post">
    <div class="editor-field">
        <label for="firstName">First name</label> <input
            class="input k-popup k-list-container k-group k-reset" type="text"
            name="firstName" />
    </div>

    <div class="editor-field">
        <label for="lastName">Last name</label> <input
            class="input k-popup k-list-container k-group k-reset" type="text"
            name="lastName" />
    </div>

     <div class="editor-field">
        <label for="dateOfBirth">Date of birth</label>
        <kendo:datePicker name="dateOfBirth"></kendo:datePicker> //name attribute
    </div>
            <div class="editor-field left form-actions">            
        <a href="http://localhost:8080/GasfProject/gasf/main/menu/students"
            class="k-button">Cancel</a>
        <input class="k-button" type="submit" name="add" value="Save">
    </div>
    </form:form>
</div>
 

Контроллер

 @RequestMapping(value = "/menu/addStudent", method = RequestMethod.POST)
public String addStudent(@ModelAttribute("addForm") Student model) {

    logger.debug("Received request in add student post");


    // insert in database
    StudentDatabaseAccess.addNewStudent(model);

    return "redirect:students";
}
 

Студенты

 public class Student {
    private String firstName;
    private String lastName;
    private Date dateOfBirth;
    //getters and setters
}
 

Ответ №1:

Вы можете попробовать добавить аннотацию DateTimeFormat в поле DateOfBirth

 public class Student {
    private String firstName;
    private String lastName;

    @DateTimeFormat(pattern = "yyyy/MM/dd")
    private Date dateOfBirth;

    //getters and setters
}
 

Это подскажет spring, как преобразовать данные из даты в строку и из строки в дату.

Убедитесь, что шаблон, который вы задали в аннотации, совпадает с тем, который вы, вероятно, задали в поле kendo datepicker в javascript.