#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.