2

我正在使用 Spring 3.1.1.RELEASE。我有一个模型,我提交给我的一个控制器。在其中,是以下字段

@DateTimeFormat(pattern = "#{appProps['class.date.format']}")
private java.util.Date startDate;

但是,上述方法不起作用(EL 没有被解释),就每次我提交表单时,我都会收到错误消息。如果我使用以下

@DateTimeFormat(pattern="yyyy-MM-dd")
private java.util.Date startDate;

一切正常。但理想情况下,我想从属性文件中驱动模式。这可能吗?如果可以,正确的语法是什么?

  • 戴夫
4

2 回答 2

2

现在它似乎只适用于属性占位符。

看看这个: https ://jira.springsource.org/browse/SPR-8654

于 2013-07-31T19:30:03.887 回答
1

我会使用PropertySourcesPlaceholderConfigurer来读取我的系统属性。然后,您可以使用此语法来解析占位符 : ${prop.name}

您的注释文件应该像这样工作:

@DateTimeFormat(pattern = "${class.date.format}")
private java.util.Date startDate;

要在 xml 中为您的应用程序配置 PropertySourcesPlaceholderConfigurer,请尝试以下操作:

<bean class="org.springframework.beans.factory.config.PropertySourcesPlaceholderConfigurer">
  <property name="location">
    <list>
      <value>classpath:myProps.properties</value>
    </list>
  </property>
  <property name="ignoreUnresolveablePlaceholders" value="true"/>
</bean>

或者,使用 JavaConfig:

@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
    //note the static method! important!!
    PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
    Resource[] resources = new ClassPathResource[] { new ClassPathResource("myProps.properties")};
    configurer.setLocations(resources);
    configurer.setIgnoreUnresolvablePlaceholders(true);
    return configurer;
}
于 2013-07-31T19:33:02.060 回答