2010-10-14 17 views

Respuesta

38

PropertyPlaceholderConfigurer sólo puede analizar marcadores de posición en la configuración de la primavera (XML o anotaciones). Es muy común en las aplicaciones de Spring usar un Properties bean. 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> 

Luego, en su JSP, puede utilizar ${properties.myProperty} o ${properties['my.property']}.

+0

realmente bueno! Pero el primer bean en declaración es de tipo PropertiesFactoryBean, no de ProperyPlaceholderConfigurer. ¿Debería significar esto que para poder reemplazar los marcadores de posición de propiedad en xml debo duplicar la declaración de propiedades de aplicación en PropertyPlaceholderConfigurerBean? – glaz666

+0

@ glaz666: Olvidé decir que PropertyPlaceholderConfigurer no es apropiado para esto. Edité mi respuesta un poco. – sinuhepop

+0

Pasé este bean "properties" a PlaceHolderConfigurer y parece que funciona, pero todavía no puedo hacerlo funcionar en archivos JSP porque cuando intento acceder a $ {properties} incluso no estoy tratando de llamar a getAttribute desde ContextExposingHttpServletRequest donde exposición de frijoles ocurre – glaz666

0

Para utilizar con múltiples ubicaciones en una lista que podría no estar presentes como se puede hacer con el contexto: la propiedad del marcador de posición de frijol:

<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> 
6

Después de primavera 3.1, puede utilizar la etiqueta con el <spring:eval />SpEL así:

<spring:eval expression="@applicationProps['application.version']" 
      var="applicationVersion"/> 
-3

Esto le mostrará todas las tablas del esquema actual (la que está conectado):

select table_name from user_tables order by table_name; 

Esto le mostrará las tablas del esquema, para los que tiene selectos derechos al menos:

select owner, table_name from all_tables where owner='<owner>' order by owner, table_name; 
0
`<bean class="org.springframework.context.support.ReloadableResourceBundleMessageSource" 
    id="messageSource" 
    p:basenames="WEB-INF/i18n/site" 
    p:fallbackToSystemLocale="false"/>` 

Ahora bien, esto es sus propiedades de 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>` 
Cuestiones relacionadas