Je configure mes propriétés dans app-servlet.xml
avec un bean comme celui-ci:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/my.properties"></property>
</bean>
La plupart du temps, j'accède aux propriétés de mes contrôleurs ou d'autres classes comme ceci:
@Value("${dbtype}")
public String dbType;
Mais que se passe-t-il si je veux utiliser une propriété dans un fichier JSP et contourner le contrôleur. Cela signifie que je ne souhaite pas que le type de valeur soit transmis du contrôleur à la JSP en tant qu'attribut de modèle.
Existe-t-il un moyen d'accéder aux propriétés directement dans un jsp?
Config de printemps
<util:properties id="propertyConfigurer"
location="classpath:yourPropertyFileClasspathHere "/>
<context:property-placeholder properties-ref="propertyConfigurer" />
jsp
<spring:eval expression="@propertyConfigurer.getProperty('propertyNameHere')" />
Ce que vous pouvez également faire ne vous oblige pas à rechercher des propriétés dans un espace réservé de propriété unique, ou si vous utilisez la configuration Java et instanciez simplement un PropertySourcesPlaceholderConfigurer, utilisez l'objet environment:
<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"/>
Maintenant ceci est votre Fichier de propriétés
site.name=Cool Bananas
Et voici votreJSP
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<html>
<head>
<title><spring:message code="site.name"/></title>
</head>
<body>
</body>
</html>
Dans le contexte, faites ceci:
<util:properties
id="propertyConfigurer"
location="classpath:yourPropertyFileClasspathHere"
/>
<context:property-placeholder properties-ref="propertyConfigurer" />
pour la création du bean Properties (identique à @ nkjava.blogspot.com dans son answer ) . Mais ce n’est pas tout le travail à faire.
Vous devez maintenant exposer ce bean à JSP . Il existe peu de façons de le faire, cela dépend du type de résolveur de vue. Il existe une solution pour InternalResourceViewResolver -, vous devez définir "exposeContextBeansAsAttributes" sur true et renseigner "exposureContextBeanNames" avec la liste des beans requis.
Pour tuiles sont aussi une solution.
Alors vous pouvez simplement utiliser ce haricot dans votre JSP. Via EL par exemple:
${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!!!!!
---------------------------------------------------------------------------------