在格式化程序中使用自定义消息转换器时出现NoSuchMessageException

时间:2013-06-16 12:52:39

标签: json spring jackson spring-3 jackson-modules

我正在使用Spring 3.2 M1和Hibernate 3。

我正在使用格式化程序将POJO(碰巧是Hibernate映射实体)格式化为它们的字符串表示形式。这非常方便,因为它允许我将字符串值绑定到对象。 xml中的配置是:

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

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
    <property name="formatters">
        <set>
            <bean class="aa.XFormatter" />
            <bean class="aa.YFormatter" />
            <bean class="bb.ZFormatter" />
        </set>
    </property>
    <property name="formatterRegistrars">
        <set>
            <bean class="aa.DateFormatterRegistrar" />
        </set>
    </property>
</bean>

在我需要添加一个自定义对象映射器(使用 jackson-module-hibernate 的HibernateAwareObjectMapper)来解决hibernate POJO的延迟加载问题时,一切都工作正常,从后端jsonifiying响应。我将其添加到上面的代码中:

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

    <mvc:message-converters>
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="objectMapper">
                <bean class="cc.HibernateAwareObjectMapper"></bean>
            </property>
        </bean>
    </mvc:message-converters> 

</mvc:annotation-driven>

这具有修复延迟加载问题的效果。但是在调用格式化程序时出现了一个新的错误(当将字符串绑定到日期时为ex):

org.springframework.context.NoSuchMessageException: No message found under code 'fieldOfX.depended' for locale 'en_US'.
at org.springframework.context.support.AbstractMessageSource.getMessage(AbstractMessageSource.java:161)...

fieldOfX是Date类型的字段,在添加自定义对象映射器之前,该字段从其字符串表示形式完美地格式化为其日期/对象表示。我很想知道依赖代表什么。

对我来说另一个奇怪的事情是从对象到字符串的格式化似乎工作正常。

据我了解,格式化程序只是特殊转换器。消息转换器只是转换器的另一种。但我开始意识到我错了。

那么我在做什么/理解错误?欢迎任何帮助。

1 个答案:

答案 0 :(得分:0)

很抱歉浪费每个人的时间,但问题已经通过升级到稳定版本3.2.2.RELEASE解决了。

感谢@Pavel Horal指出这一点。