Spring MVC表单日期(jquery)映射字段

时间:2014-02-24 09:20:28

标签: jquery jsp spring-mvc jsp-tags

我正在尝试使用Spring MVC和一些jquery映射从我的jsp中的DB检索的日期。 我在我的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字段?

谢谢yoyr帮助家伙!

1 个答案:

答案 0 :(得分:0)

在您的jsp页面上,确保<form:form>标记的modelAttribute值是您放入模型中的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:" "});