私はapp-servlet.xml
で次のようなBeanを使用してプロパティを設定しています。
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/my.properties"></property>
</bean>
ほとんどの場合、コントローラーまたは次のような他のクラスのプロパティにアクセスします。
@Value("${dbtype}")
public String dbType;
しかし、JSPファイルでプロパティを使用し、コントローラーをバイパスする場合はどうでしょう。意味モデルの属性としてコントローラーからJSPに値の型が渡されることは望ましくありません。
Jspでプロパティに直接アクセスする方法はありますか?
春の設定
<util:properties id="propertyConfigurer"
location="classpath:yourPropertyFileClasspathHere "/>
<context:property-placeholder properties-ref="propertyConfigurer" />
jsp
<spring:eval expression="@propertyConfigurer.getProperty('propertyNameHere')" />
また、単一のプロパティプレースホルダーでプロパティを検索することとは関係ありません。またはJava configを使用してPropertySourcesPlaceholderConfigurerをインスタンス化する場合は、環境オブジェクトを使用します。
<spring:eval expression="@environment.getProperty('application_builtBy')" />
<bean class="org.springframework.context.support.ReloadableResourceBundleMessageSource"
id="messageSource"
p:basenames="WEB-INF/i18n/site"
p:fallbackToSystemLocale="false"/>
これがあなたのProperties Fileです
site.name=Cool Bananas
そして、あなたの[〜#〜] jsp [〜#〜]
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<html>
<head>
<title><spring:message code="site.name"/></title>
</head>
<body>
</body>
</html>
コンテキストでこれを行うだけです:
<util:properties
id="propertyConfigurer"
location="classpath:yourPropertyFileClasspathHere"
/>
<context:property-placeholder properties-ref="propertyConfigurer" />
properties Beanを作成するために(彼の answer で@ nkjava.blogspot.comと同じ)。しかし、これはすべての作業が必要なわけではありません。
次に、このBeanをJSPに公開する必要があります。ビューリゾルバのタイプに応じて、これを行う方法はほとんどありません。 InternalResourceViewResolver の解決策があります。「exposeContextBeansAsAttributes」をtrueに設定し、「exposedContextBeanNames」に必要なBeanのリストを設定する必要があります。
tiles も解決策です。
JSPでこのBeanを単純に使用することができます。たとえばEL経由:
${propertyConfigurer['my.string.from.prop.file']}
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="locations">
<list>
<!-- default resources folder (default package maven project) -->
<value>classpath:mongodb.remote.properties</value>
<!-- Or in /WEB-INF/ folder -->
<value>/WEB-INF/mongodb.remote.properties</value>
</list>
</property>
</bean>
----------------------------------------------------------------------------------------
If you have for example this package : com.profile.config, com.profile.controller, ecc..
it's not problem if you put only com.profile, it's ok !!! Now
@Configuration
@ComponentScan(basePackages = "com.profile")
/** resources folder & default package maven project*/
@PropertySource(value = { "classpath:mongodb.remote.properties" })
public class MyPropertySourcesPlaceholderConfigurer {
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
---------------------------------------------------------------------------------
Your property file
label.test.val=this is the property file value!!!!!
---------------------------------------------------------------------------------
@Controller
public class LabelsAndValuesController {
@Value("${label.test.val}")
String test;
}
---------------------------------------------------------------------------------
this is the property file value!!!!!
---------------------------------------------------------------------------------