Ich setze meine Eigenschaften in app-servlet.xml
mit einer Bohne wie folgt:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/my.properties"></property>
</bean>
Meistens greife ich auf die Eigenschaften in meinen Controllern oder auf andere Klassen zu:
@Value("${dbtype}")
public String dbType;
Was aber, wenn ich eine Eigenschaft in einer JSP-Datei verwenden und den Controller umgehen möchte. Das bedeutet, dass der Werttyp nicht als Modellattribut vom Controller an die JSP übergeben werden soll.
Gibt es eine Möglichkeit, direkt in einem JSP auf Eigenschaften zuzugreifen?
Spring config
<util:properties id="propertyConfigurer"
location="classpath:yourPropertyFileClasspathHere "/>
<context:property-placeholder properties-ref="propertyConfigurer" />
jsp
<spring:eval expression="@propertyConfigurer.getProperty('propertyNameHere')" />
Was Sie auch tun können, bedeutet nicht, dass Sie nach Eigenschaften in einem einzelnen Platzhalter für Eigenschaften suchen müssen, oder wenn Sie Java-Konfiguration verwenden und nur einen PropertySourcesPlaceholderConfigurer-Instanziierer verwenden, verwenden Sie das Umgebungsobjekt:
<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"/>
Jetzt ist dies Ihre Eigenschaftendatei
site.name=Cool Bananas
Und hier geht deinJSP
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<html>
<head>
<title><spring:message code="site.name"/></title>
</head>
<body>
</body>
</html>
Im Kontext einfach das tun:
<util:properties
id="propertyConfigurer"
location="classpath:yourPropertyFileClasspathHere"
/>
<context:property-placeholder properties-ref="propertyConfigurer" />
für das Erstellen von Properties bean (wie @ nkjava.blogspot.com in seiner answer ) . Dies ist jedoch nicht alles, was Sie tun müssen.
Jetzt müssen Sie diese Bean für JSP freigeben. Es gibt nur wenige Möglichkeiten, dies zu tun, abhängig vom Typ des Ansichtsauflösers. Es gibt eine Lösung für InternalResourceViewResolver - Sie müssen "exposeContextBeansAsAttributes" auf "true" setzen und "exposedContextBeanNames" mit der Liste der erforderlichen Beans auffüllen.
Für Fliesen sind auch Lösungen.
Dann können Sie diese Bean einfach in Ihrer JSP verwenden. Über EL zum Beispiel:
${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!!!!!
---------------------------------------------------------------------------------