2010-10-14 13 views
15

में PropertyPlaceholderConfigurer में निर्दिष्ट संपत्ति फ़ाइल से संपत्ति का उपयोग करने के अपने आवेदन संदर्भ में मैं परिभाषित किया है गुण फ़ाइल:कैसे JSP

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

मैं संपत्ति JSP पेज पर है कि फाइल में परिभाषित का मूल्य प्राप्त करना चाहते हैं। वहाँ है कि रास्ते में

${something.myProperty}? 

उत्तर

38

PropertyPlaceholderConfigurer केवल स्प्रिंग विन्यास (XML या एनोटेशन) में प्लेसहोल्डर पार्स कर सकते हैं करने के लिए एक रास्ता है। वसंत अनुप्रयोगों में बहुत आम है Properties बीन का उपयोग करें।

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

फिर, अपने JSP में, आप ${properties.myProperty} या ${properties['my.property']} उपयोग कर सकते हैं: आप इसे अपने दृश्य से यह रास्ता (आप InternalResourceViewResolver उपयोग कर रहे हैं यह सोचते हैं) का उपयोग कर सकते हैं।

+0

वास्तव में अच्छा हो जाता है! लेकिन घोषणा में पहला बीन PropertiesFactoryBean प्रकार का है, ProperyPlaceholderConfigurer का नहीं। इसका मतलब यह होना चाहिए कि एक्सएमएल में संपत्ति प्लेसहोल्डर के प्रतिस्थापन के लिए मैं प्रॉपर्टीप्लेसहोल्डर कॉन्फिगररबीन में आवेदन गुणों की घोषणा को डुप्लिकेट करना चाहता हूं? – glaz666

+0

@ glaz666: मैं यह कहना भूल गया था कि PropertyPlaceholdConfigurer इसके लिए अपरिवर्तनीय नहीं है। मैंने अपना जवाब थोड़ा सा संपादित किया। – sinuhepop

+0

मैंने प्लेसहोल्डर कॉन्फ़िगरर को यह "गुण" बीन पास कर दिया है और ऐसा लगता है कि यह काम करता है, लेकिन फिर भी मैं इसे जेएसपी फाइलों में काम नहीं कर सकता क्योंकि जब मैं $ {Properties} तक पहुंचने का प्रयास करता हूं तो यह ContextExposingHttpServletRequest से getAttribute को कॉल करने का भी प्रयास नहीं कर रहा है बीन का खुलासा होता है – glaz666

0

एक सूची में कई स्थानों जो उपहार के रूप में संदर्भ के साथ किया जा सकता है नहीं हो सकता है के साथ प्रयोग करने के लिए: संपत्ति-प्लेसहोल्डर सेम:

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

विचारों में पुनरावर्ती संपत्ति प्लेसहोल्डर विस्तार का उपयोग करने के लिए, आप एक अलग की जरूरत है समाधान, इस जवाब पर एक नज़र डालें:

https://stackoverflow.com/a/10200249/770303

6

स्प्रिंग 3.1 के बाद, आप SpEL इस तरह के साथ <spring:eval /> टैग का उपयोग कर सकते हैं:

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

यह आपको वर्तमान स्कीमा की तालिकाओं (जो आपने प्रवेश किया हुआ) दिखाएगा:

select table_name from user_tables order by table_name; 

यह आपको स्कीमा की मेज, जिसके लिए आप का चयन अधिकार कम से कम राशि दिखाएगा:

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

अब इस अपने गुण फ़ाइल

है
`site.name=Cool Bananas` 

और। यहाँ अपने JSP

`<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %> 
<html> 
    <head> 
    <title><spring:message code="site.name"/></title> 
    </head> 
    <body> 
    </body> 
</html>` 
संबंधित मुद्दे