У меня есть 2 <form:>
поля на странице .jsp,
Для полей: одно для dateOfBirth и одно для возраста.
Пользователи могут выбрать свою дату рождения черезскрипт jQuery Datepicker, который автоматически вычисляет их возраст для последующего использования.
Я хотел бы использовать атрибут рассчитанного возраста, который будет автоматически установлен SpringMVC.Я не уверен, как это сделать с точки зрения извлечения рассчитанного возраста из сценария jQuery.
Моя страница .jsp
<!DOCTYPE html>
<html>
<head>
<title>Customer Registration Form</title>
<style>
.error {
color: red
}
</style>
<!-- Date picker jquery stuff start -->
<link rel="stylesheet"
href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
$(function() {
$('#datepicker').datepicker(
{
onSelect : function(value, ui) {
var today = new Date();
var age = today.getFullYear() - ui.selectedYear;
$('#age').text(age);
},
maxDate : '+0d',
changeMonth : true,
changeYear : true,
defaultDate : '-18yr',
dateFormat : 'dd-mm-yy',
});
});
</script>
<!-- Date picker jquery stuff end -->
</head>
<body>
<form:form action="processForm1" modelAttribute="customer">
Date of Birth: <form:input type="text" id="datepicker"
path="birthdate" placeholder="dd/mm/yyyy" />
<br>
<br>
<!-- I'm not sure if retrieving age like this from the jQuery calculations work-->
Age: <form:input type="text" id="age" path="age" />
<br>
<br>
<input type="submit" value="Submit" />
</form:form>
</body>
</html>
Мой объект сущности .java file
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Email;
import com.luv2code.springdemo.mvc.validation.CourseCodeDefinitions;
import com.luv2code.springdemo.mvc.validation.DateConverter;
public class Customer {
@Temporal(TemporalType.DATE)
@DateTimeFormat(pattern = "dd-MM-yyyy")
private Date birthdate;
private String age;
public String getBirthdate() {
return DateConverter.formatDateToStringFormat(birthdate);
}
public void setBirthdate(Date birthdate) {
System.out.println("Debug: Customer.java setBirthdate()-> birthdate: " +birthdate);
System.out.println("Debug: Customer.java setBirthdate()-> birthdate type: " + birthdate.getClass().getSimpleName());
this.birthdate = birthdate;
System.out.println("Debug: Customer.java setBirthdate()-> Exiting setBirthday()");
}
public String getAge() {
//this keeps printing null
return age;
}
public void setAge(String age) {
this.age = age;
}
}
мой класс контроллера
@RequestMapping("/processForm1")
public String processForm1(
@ModelAttribute("customer") Customer theCustomer) {
System.out.println("Debug: CustomerController.java processForm1() => DoB: " + theCustomer.getBirthdate());
System.out.println("Debug: CustomerController.java processForm1() => DoB type: " + theCustomer.getBirthdate().getClass().getSimpleName());
//this keeps printing null :(
System.out.println("Customer age: " + theCustomer.getAge());
return "customer-confirmation";
}
Как видно из приведенного выше класса, всякий раз, когда я пытаюсь извлечь возраст пользователя из моей функции getAge (), он печатает нулевое значение, а незначение, выбранное пользователем из средства выбора даты ... как это исправить, чтобы springMVC правильно установил возраст через jQuery datepicker, чтобы я мог получать и манипулировать данными, сохраненными в объекте клиента?
СпасибоЗа любую помощь заранее!