2012-04-11 10 views
28

मैं एक सर्वलेट विन्यास जानकारी लोड करने की जरूरत है कि बना रहा हूं सूची भंडारण। मुझे आवश्यक कॉन्फ़िगरेशन जानकारी का एक हिस्सा स्ट्रिंग्स की एक सूची है (विशेष रूप से, होस्टनामों और/या यूआरएल की एक सूची)।जावा सर्वलेट - एक मूल्यों की web.xml में (कई परम-मूल्य के लिए एक परम-नाम)

मैं इस जानकारी को मेरी सर्वलेट की web.xml फ़ाइल में संग्रहीत करने की उम्मीद कर रहा था (इसलिए मुझे अपना खुद का पार्सर लिखना नहीं है) या तो संदर्भ-param या init-param; एक ही param-name के लिए अनिवार्य रूप से एकाधिक param-value है।

मैं क्या पसंद करेंगे का उदाहरण:

<context-param> 
    <param-name>validHosts</param-name> 
    <param-value>example1.com</param-value> 
    <param-value>example2.com</param-value> 
    <param-value>example3.com</param-value> 
</context-param> 

मेरे प्रारंभिक अनुसंधान इस में इंगित करता है संभव नहीं है - कि वहाँ केवल किसी भी परम-नाम के लिए एक एकल परम-मूल्य (हो सकता है या तो संदर्भ-भीतर परम या init-param)।

मैं जानता हूँ कि मैं सिर्फ एक परम-मूल्य के भीतर एक पृथक सूची इस्तेमाल कर सकते हैं, लेकिन वास्तव में मैं अभी भी web.xml उपयोग करना चाहते हैं मेरी ही एकमात्र विकल्प है? क्या मुझे बस अपनी खुद की कॉन्फ़िगरेशन फ़ाइल पार्सर लिखना बंद करना चाहिए?

उत्तर

37

सर्वलेट कल्पना का कहना है कि आप किसी भी संदर्भ पैरामीटर के लिए केवल एक मान हो सकता है। तो, आपको केवल सीमित सूची के साथ जाने के साथ छोड़ दिया गया है।

<context-param> 
    <param-name>validHosts</param-name> 
    <param-value>example1.com,example2.com,.....</param-value> 
</context-param> 
+4

जैसा कि मुझे संदेह था .... ठीक है, मैं करूँगा, लेकिन इसका मतलब यह नहीं है कि मुझे यह पसंद है! – greenlaw

11

हाँ, बस (इस के लिए उपलब्ध कोई अन्य विकल्प के रूप में) सीमांकक का उपयोग करें:

<context-param> 
    <param-name>validHosts</param-name> 
    <param-value>example1.com,example2.com,example3.com</param-value> 
</context-param> 



then simply 
String[] validHosts = param.split(","); // not really much to do 
18

प्रत्येक परम को अपनी लाइन पर रखें। मैंने हाल ही में यह किया है और यह ठीक काम करता है:

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/spring-beans.xml 
     /WEB-INF/security-config.xml  
    </param-value> 
</context-param> 
+1

तो मुझे लगता है कि आप बस एक न्यूलाइन चरित्र और छिद्रित व्हाइटस्पेस के साथ विभाजित हैं? यह निश्चित रूप से इसे और अधिक पठनीय बना देगा। – greenlaw

+3

यह केवल तभी काम करता है क्योंकि वसंत ContextLoaderListener में आपके लिए मानों को विभाजित करता है। [उनके दस्तावेज] से [https://github.com/spring-projects/spring-framework/blob/f38a4b9040f50328ccc8c8c4fe54d366ff2c99ba/spring-context/src/main/java/org/springframework/context/support/AbstractRefreshableConfigApplicationContext.java#L62) : Init-param शैली में इस अनुप्रयोग संदर्भ के लिए कॉन्फ़िगरेशन स्थान, यानी अल्पविराम, अर्धविराम या whitespace._ द्वारा अलग-अलग स्थानों के साथ कॉन्फ़िगर करें। – Lucas

संबंधित मुद्दे