I'm setting my properties in app-servlet.xml
with a bean like this:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/my.properties"></property>
</bean>
Most of the time I access the properties in my controllers or other classes like this:
@Value("${dbtype}")
public String dbType;
But what if I want to use a property in a JSP file and bypass the controller. Meaning I don't want the value type being passed from the controller to the JSP as a model attribute.
Is there a way to access properties directly in a jsp?
In order to get your properties file, you could use the helpful method in ServletContext: getResourceAsStream. getValuesFromPropertiesFile(request, "my_properties. txt" ); It could be noted that the Properties class does implement the Map interface, and you can pass it straight back to your JSP for read-only purposes.
Spring config
<util:properties id="propertyConfigurer" location="classpath:yourPropertyFileClasspathHere "/> <context:property-placeholder properties-ref="propertyConfigurer" />
jsp
<spring:eval expression="@propertyConfigurer.getProperty('propertyNameHere')" />
What you can also do that doesn't tie you to looking up properties in a single property placeholder, or if you are using java config and just instantiating a PropertySourcesPlaceholderConfigurer is use the environment object:
<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"/>
Now this is your Properties File
site.name=Cool Bananas
And here goes your JSP
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<html>
<head>
<title><spring:message code="site.name"/></title>
</head>
<body>
</body>
</html>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With