2

Spring 3.1.1.RELEASE を使用しています。コントローラーの 1 つに送信するモデルがあります。その中に、次のフィールドがあります

@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 に答える