Cómo usar la propiedad del archivo de propiedades especificado en PropertyPlaceholderConfigurer en JSP
Pregunta
En mi contexto de aplicación que he definido archivo de propiedades:
<context:property-placeholder location="classpath:application.properties" />
Quiero obtener el valor de la propiedad definida en ese archivo en la página JSP. ¿Hay una manera de hacerlo en la forma
${something.myProperty}?
Solución
PropertyPlaceholderConfigurer
sólo puede analizar marcadores de posición en la configuración de resorte (XML o anotaciones). Es muy común en aplicaciones Spring utilizan un grano Properties
. Se puede acceder a él desde el punto de vista de esta manera (suponiendo que está utilizando InternalResourceViewResolver
):
<bean id="properties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list><value>classpath:config.properties</value></list>
</property>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
<property name="exposedContextBeanNames">
<list><value>properties</value></list>
</property>
</bean>
A continuación, en su JSP, puede utilizar ${properties.myProperty}
o ${properties['my.property']}
.
Otros consejos
Después de Primavera 3.1, puede utilizar la etiqueta con <spring:eval />
SpEL como esto:
<spring:eval expression="@applicationProps['application.version']"
var="applicationVersion"/>
Para usar con múltiples ubicaciones en una lista que podría no estar presentes como se puede hacer con el contexto: Haba de la propiedad: marcador de posición
<beans:bean id="appProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<beans:property name="ignoreResourceNotFound" value="true" />
<beans:property name="locations">
<beans:list>
<beans:value>classpath:application.properties</beans:value>
<beans:value>classpath:environment.properties</beans:value>
<beans:value>classpath:environment-${env}.properties</beans:value>
</beans:list>
</beans:property>
</beans:bean>
Para utilizar la expansión marcador de posición propiedad recursiva en las vistas, se necesita una solución diferente, echar un vistazo a esta respuesta:
`<bean class="org.springframework.context.support.ReloadableResourceBundleMessageSource"
id="messageSource"
p:basenames="WEB-INF/i18n/site"
p:fallbackToSystemLocale="false"/>`
Ahora bien, este es su Propiedades del archivo
`site.name=Cool Bananas`
Y. Aquí va su JSP
`<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<html>
<head>
<title><spring:message code="site.name"/></title>
</head>
<body>
</body>
</html>`
Esto le mostrará las tablas del esquema actual (la que está conectado):
select table_name from user_tables order by table_name;
Esto le mostrará todas las tablas del esquema, para los que tiene derechos seleccione al menos:
select owner, table_name from all_tables where owner='<owner>' order by owner, table_name;