0

我有以下问题。

在我的 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”)并将其映射到上面的日历属性(它可以是默认日期,但在输入中指定年份,例如:01-01-2012)。可能吗?如果有任何帮助,我将不胜感激。

4

1 回答 1

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>
于 2012-08-07T10:03:28.637 回答