2010-10-14 17 views
15

yılında PropertyPlaceholderConfigurer belirtilen mülkiyet dosyasından özelliğini kullanmak nasıl tanımladığınız özellikleri dosya:başvurum bağlamda JSP

<context:property-placeholder location="classpath:application.properties" /> 

Ben JSP sayfasında bu dosyada tanımlı özelliğin değerini almak istiyorum. şekilde

${something.myProperty}? 

cevap

38

PropertyPlaceholderConfigurer sadece Bahar yapılandırma (XML veya ek açıklamalar) 'de yer tutucular ayrıştırabilir Bunu yapmanın bir yolu var mı. Yay uygulamalarında çok yaygın olan bir Properties fasulye kullanıyor.

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

Ardından, JSP, sen ${properties.myProperty} veya ${properties['my.property']} kullanabilirsiniz: Eğer görünümden bu şekilde (eğer InternalResourceViewResolver kullandığınız varsayarak) erişebilirsiniz.

+0

gerçekten iyi gidiyor! Ama beyandaki ilk fasulye ProperyPlaceholderConfigurer değil, PropertiesFactoryBean tipindedir. Bu, xml'de özellik yer tutucularının yerini alabilmek için PropertyPlaceholderConfigurerBean'daki uygulama özelliklerinin bildirimini kopyalamak anlamına mı geliyor? – glaz666

+0

@ glaz666: PropertyPlaceholderConfigurer'ın bunun için uygun olmadığını söylemeyi unuttum. Cevabımı biraz düzenledim. – sinuhepop

+0

Bu "özellikler" fasulyeyi PlaceHolderConfigurer ürününe aktardım ve işe yaramış görünüyor, ancak yine de JSP dosyalarında çalışamıyorum çünkü $ {properties} öğesine erişmeyi denediğimde, ContextExposingHttpServletRequest öğesinden getAttribute aramaya çalışmıyor bile fasulye ortaya çıkıyor – glaz666

0

içeriği ile yapılabilir gibi mevcut olmayabilir liste halinde birden fazla yerde birlikte kullanmak için : mülkiyet tutucu fasulyesi:

<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

Bahar 3.1 sonra, böyle SpEL ile <spring:eval /> etiketi kullanabilirsiniz:

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

Bu size (giriş yaptıktan) geçerli şemanın tabloları gösterecektir:

select table_name from user_tables order by table_name; 

Bu size seçme haklarını en azından sahip olduğu için şemanın tabloları, gösterecektir:

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"/>` 

Şimdi bu Özellikleri

File olduğunu

Ve. İşte JSP

`<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %> 
<html> 
    <head> 
    <title><spring:message code="site.name"/></title> 
    </head> 
    <body> 
    </body> 
</html>`