如何将<form:input>绑定到命令对象的Calendar属性,在jsp <form:form> </form:form> </form:input>中仅指定year

时间:2012-08-07 09:41:02

标签: jsp spring-mvc

我有以下问题。

在我的Spring MVC Web应用程序中,有一些具有Calendar属性的命令对象类。

public class TestBean {

private Calendar startDate;

//other properties

//setters and getters 

}

在我的JSP页面中,我的表格如下:

<form:form method="post" commandName="testBean">
  <form:input path="startDate" cssClass="forminput" />
</form:form>

但是我想在上面的表单输入中添加年份(“yyyy”)并将其映射到上面提到的Calendar属性(它可以是dafault日期,但是在输入中指定年份,例如:01-01-2012) 。可能吗? 我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:0)

我建议你在这里实现自己的Spring转换器:

final class StringToCalendar implements Converter<String, Calendar> {

    public Calendar convert(String source) {
        Calendar calendar = Calendar.getInstance();

        // Setting 01-01-yyyy date
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        calendar.set(Calendar.MONTH, 1);
        calendar.set(Calendar.YEAR, Integer.parseInt(source)); // This could throw an unchecked exception!

        return calendar;
    }

}

并在Spring XML配置中注册:

<mvc:annotation-driven conversion-service="conversionService"/>

<bean id="conversionService"
    class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
    <property name="converters">
       <list>
          <bean class="your.package.StringToCalendar "/>
       </list>
    </property>
</bean>