Я пытаюсь сопоставить дату, полученную из БД, в моем jsp, используя Spring MVC и некоторый jquery. У меня это в моем jsp:
<form:input path="startDate" id="startDate" type="text" cssClass="input date"/>
В моем контроллере весны у меня есть этот код:
model.addAttribute(TVA_FORM, TvaMapping.modelToForm(tvaService.findCurrentTva()));
Код метода modelToForm
:
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
TvaForm tvaForm = new TvaForm(tva.getId(), tva.getRate());
tvaForm.setStartDate(sdf.format(tva.getStartDate()));
Форма:
public class TvaForm {
private Integer id;
@NotNull
private Float rate;
@NotNull
@NotEmpty
private String startDate;
// Contructors/ getters / setters
}
И субъект:
public class Tva {
@Id
@GeneratedValue
@Column(name = "ID")
private Integer id;
@Column(name = "RATE", nullable = false)
private Float rate;
@Column(name = "START_DATE", nullable = false)
@Temporal(TemporalType.DATE)
private Date startDate;
}
Jquery:
$('input.date').datepicker($.datepicker.regional[ "fr" ]).datepicker("option", "dateFormat", "dd-mm-yy");
Что я делаю не так? почему startDate
не отображается в моем поле jsp?
Спасибо вам за помощь!
На вашей странице jsp убедитесь, что значение атрибута modelAttribute <form:form>
является строковым значением TVA_FORM, которое вы помещаете в модель,
<form:form method="POST" modelAttribute="string value of TVA_FORM" action="your action url" methodParam="submit">
Вот как я сопоставляю тип даты и в то же время пользуюсь преимуществами jquery datepicker.
В моем классе команд моя дата все еще является типом java.util.Date. Нет необходимости преобразовывать его в String. Я использую Spring @DateTimeFormat для обработки преобразования из Date в String и обратно.
@DateTimeFormat(pattern = ArmsConstants.DATE_FORMAT_SHORTDATE)
@NotNull
private Date effectiveDate;
@DateTimeFormat(pattern = ArmsConstants.DATE_FORMAT_SHORTDATE)
На моей странице jsp,
<th><form:label for="ori.effectiveDate" path="ori.effectiveDate" cssErrorClass="error">Effective Date *:</form:label></th>
<td><form:input path="ori.effectiveDate" class="datepicker" type="mdate" cssErrorClass="errorInput datepicker"/>
И jquery так же просто, как
$( ".datepicker" ).datepicker();
О, И я также использую плагин jquery maskedinput для форматирования выбранной даты на странице jsp, конечно формат должен быть таким же, как и то, что я использовал в @DateTimeFormat
$("[type='mdate']").mask("99/99/9999",{placeholder:" "});
<form:form modelAttribute="tvaForm" id="tvaForm" commandName="tvaForm" cssClass="node" action="tva/save">
private static final String TVA_FORM = "tvaForm";