Spring DateTime转换服务异常

时间:2015-10-18 17:03:04

标签: java spring date spring-mvc datetime

我得到了这个例外:

无法将java.lang.String类型的属性值转换为必需类型java.util.Date for property startTime; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type java.util.Date for value 10:00; nested exception is java.lang.IllegalArgumentException

尝试输入时间并通过表单发送给控制器。

我对日期有同样的问题,但设法使用我在网上找到的一个例子修复它:

 <bean id="dateFormat" class="java.text.SimpleDateFormat">
    <constructor-arg value="dd/MM/yyyy" />
</bean>

<bean id="appointment" class="com.nw.model.Appointment">
    <property name="theDate">
        <bean factory-bean="dateFormat" factory-method="parse">
            <constructor-arg value="22/05/1983" />
        </bean>
    </property>
    <property name="startTime">
        <bean factory-bean="timeFormat" factory-method="parse">
            <constructor-arg value="22/05/1983 10:00:34" />
        </bean>
    </property>
    <property name="endTime">
        <bean factory-bean="timeFormat" factory-method="parse">
            <constructor-arg value="22/05/1983 10:00:23" />
        </bean>
    </property>
</bean>

&#39; theDate&#39;没有抛出任何错误,似乎没问题。当表单未能发布时,它确实会错误地返回给我,但这完全是另一个问题 - 也许这个解决方案可以解决这个问题。

日期 - 从日期选择器中选择将解析罚款时,表单未能发布并返回的结果为Sun Oct 18 00:00:00 BST 2015 - 如果我尝试发送此日期,那么它也会抛出异常。

我在配置中添加了一小段时间,以便现在完整的格式化程序部分是:

<bean id="dateFormat" class="java.text.SimpleDateFormat">
    <constructor-arg value="dd/MM/yyyy" />
</bean>

<bean id="timeFormat" class="java.text.SimpleDateFormat">
    <constructor-arg value="HH:mm" />
</bean>


<bean id="appointment" class="com.nw.model.Appointment">
    <property name="theDate">
        <bean factory-bean="dateFormat" factory-method="parse">
            <constructor-arg value="22/05/1983" />
        </bean>
    </property>
    <property name="startTime">
        <bean factory-bean="timeFormat" factory-method="parse">
            <constructor-arg value="22/05/1983 10:00:34" />
        </bean>
    </property>
    <property name="endTime">
        <bean factory-bean="timeFormat" factory-method="parse">
            <constructor-arg value="22/05/1983 10:00:23" />
        </bean>
    </property>
</bean>

表格使用百里香叶,模型的字段是日期对象。

如果需要,我可以发布模型/表单的其余部分。提前谢谢。

1 个答案:

答案 0 :(得分:1)

你得到的具体例外是给我一点点,所以我希望看到整个堆栈的痕迹。

话虽如此,您正尝试使用格式字符串String解析格式为dd/MM/yy HH:mm:ss的{​​{1}}。这导致HH:mm,因为它不知道如何处理ParseExceptionString)的前导日期部分。

尝试以下方法:

dd/MM/yy

这将捕获您尝试表示的整个时刻(尽管它将使用您可能不需要的系统时区)。