2008-11-06 6 views
5

मैं इस तरह एक टेम्पलेट के साथ कुछ पतों को स्वरूपित करने MessageFormat उपयोग कर रहा हूँ:सशर्त स्वरूपण के समर्थन के साथ जावा में कोई हल्के टेम्पलेटिंग समाधान?

"{0}\n{1}\n{2}\n{3}, {4} {5}" 

जहां

  • 0 = सड़क 1
  • 1 = सड़क 2
  • 2 = सड़क 3
  • 3 = शहर
  • 4 = राज्य
  • 5 = ज़िप

कैप्चर किए जाने पर इनमें से अधिकतर फ़ील्ड वैकल्पिक हैं। उदाहरण के लिए, जब कोई सड़क 3 नहीं है तो मैं खाली रेखा से कैसे बचूं? मैं इस "{0} {1} {2} {3} {4} {5}" जैसे टेम्पलेट का उपयोग कर सकता हूं और उसके बाद या तो "सड़क 3 \ n" या "" तदनुसार प्रतिस्थापित कर सकता हूं, लेकिन फिर टेम्पलेट प्रदान नहीं करता है स्वरूपण की ओर बहुत लाभ।

क्या प्रारूप स्ट्रिंग में सशर्त शामिल करने का कोई तरीका है? या क्या कोई दूसरा, अधिमानतः हल्का, टेम्पलेटिंग टूल उपलब्ध है जो सशर्त स्वरूपण का समर्थन करता है?

उत्तर

2

पता नहीं कि आप इसे कितना हल्का मानेंगे लेकिन Apache Velocity जावा के लिए सबसे प्रसिद्ध टेम्पलेटिंग इंजनों में से एक है।

1

आप जिस तरह से इसे कर रहे हैं, उसे फ़ॉर्मेटिंग कर सकते हैं और फिर '\n' के साथ एक '\n' के साथ एक स्थान को प्रतिस्थापित करके खाली लाइनों को हटा सकते हैं, उदा।

result = result.replaceAll("\n+", "\n"); 
+0

प्रश्न को हल करने का अच्छा आसान तरीका पूछा गया - आईएमएचओ सिर्फ एक टेम्पलेट फ्रेमवर्क पेश करने के लिए एक पते को प्रारूपित करने के लिए थोड़ा अधिक है। –

2

jguru StringTemplates

इस साइट का निर्माण करने के jGuru इस्तेमाल किया गया था - यह अब थोड़ी देर के लिए चारों ओर हो गया है।

7

संपादित करें: पुनर्लेखन ...

आप डिजाइन बारे में परवाह नहीं करते है, तो आप आसानी से एक टेम्पलेट इंजन यादृच्छिक पर चुन सकते हैं, या फिर आपने इसका नाम, या जो कुछ भी पसंद है। यदि आपके पास इंजन चुनने के लिए मानदंड नहीं हैं, तो कौन सी परवाह करता है कि आप कौन सी चुनते हैं?

दूसरी तरफ, यदि आप डिज़ाइन के बारे में परवाह करते हैं, जैसे मॉडल-व्यू-कंट्रोलर (एमवीसी) डिज़ाइन पैटर्न का उपयोग करने में, तो आपके विकल्प जल्दी से कम हो जाते हैं।

यहां अधिकांश उत्तर विभिन्न टेम्पलेट इंजनों की शक्ति पर जोर देते हैं। लेकिन एमवीसी का पूरा बिंदु यह है कि आप और अधिक नहीं करना चाहते हैं, क्योंकि आपके टेम्पलेट्स में और अधिक करने से अंततः आपको बहुत बुरा लगेगा। व्यापार तर्क दृश्य में नहीं है, यह मॉडल में संबंधित है। नियंत्रण तर्क नियंत्रक में आता है। केवल एक टेम्पलेट इंजन है जो वास्तव में एमवीसी पैटर्न को लागू करता है। यदि आप एमवीसी पैटर्न (शायद आप इससे आगे बढ़ रहे हैं) की इच्छा नहीं रखते हैं, तो एक इंजन अभी भी आपको चोट पहुंचाने में मदद नहीं करता है और आपको अपनी कार्यक्षमता को सही तरीके से विभाजित करने के लिए प्रोत्साहित करता है।

वास्तव में केवल एक अच्छा टेम्पलेट इंजन है: स्ट्रिंग टेम्पलेट।क्यों विवरण के लिए http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf देखें।

मैंने इसे कई प्लेटफार्मों (पायथन, जावा, नेट) के साथ-साथ कई विकल्पों और स्ट्रिंग टेम्पलेट नियमों पर भी उपयोग किया है।

निर्णय किया गया। का आनंद लें। शुभकामनाएँ।

5

अन्य ने स्ट्रिंग टेम्पलेट का उल्लेख किया है, लेकिन हमने हाल ही में एमवीईएल पर स्विच किया है (जो भी अधिक करता है, लेकिन वास्तव में अधिक वजन नहीं जोड़ता है): http://mvel.codehaus.org/ (और मुझे इसका उपयोग करना आसान लगता है)।

+0

उस पर दूसरा - एमवीईएल बहुत अच्छा है! – bennyl

0

फ्रीमार्कर बहुत अच्छा है। यह हल्का, तेज़, सशर्त स्वरूपण है, और अन्य सुविधाओं की एक टन है।

3

IMHO Chunk Templating engine सबसे अच्छा है। जार फ़ाइल में केवल 180 KB है! और IF और पुनरावृत्ति का समर्थन करें। कितना मजेदार था वो !

+1

वास्तव में बहुत अच्छा है! –

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