2011-06-02 16 views
11

मुझे कुछ ईमेल ग्रंथों को टेम्पलेट करने की आवश्यकता है। कुछ भी नहीं, वास्तविक मूल्य के साथ @[email protected] जैसे कुछ को प्रतिस्थापित करें। कोई चित्र नहीं, कोई फैंसी स्वरूपण आदिपाठ templating के लिए सरल जावा lib?

आप किस जावा lib की सिफारिश कर सकते हैं? बेहतर आसान है।

उत्तर

5

आप Velocity या Freemarker एक शॉट दे सकते हैं। मैंने ईमेल टेम्पलेटिंग इंजन दोनों में उपयोग किया है। वे मूल उपयोग के मामलों के लिए सरल वाक्यविन्यास प्रदान करते हैं, लेकिन आप बाद में बहुत जटिल हो सकते हैं!

दोनों में से, मैं व्यक्तिगत रूप से फ्रीमार्कर पसंद करता हूं क्योंकि उन्होंने विभिन्न प्रकार के विभिन्न बिल्टिन प्रदान करने का वास्तव में अच्छा काम किया है जो फ़ॉर्मेटिंग संख्याएं और टेक्स्ट को बहुत सरल बनाते हैं।

1

अपाचे वेग या FreeMarker प्रयास करें, वे सहायक हो सकता है, मेरे लिए मैं FreeMarker

0

सहमत उपयोग कर रहा हूँ, अपाचे के वेग एम्बेडेड स्थितियों के लिए एक अच्छा कॉल है।

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

12

लाइब्रेरी के लिए लाइब्रेरी-मुक्त विकल्प पहले ही सुझाया गया है: java.text.MessageFormat

10

StringTemplate एक और विकल्प है। five-minute introduction कुछ बुनियादी उदाहरण और वाक्यविन्यास देता है।

StringTemplate hello = new StringTemplate("Hello, $name$", 
              DefaultTemplateLexer.class); 
hello.setAttribute("name", "World"); 
System.out.println(hello.toString()); 
2

यह यह अपने आप को ऐसा करने के लिए बहुत ही सरल:

public class Substitution { 

    public static void main(String[] args) throws Exception { 
    String a = "[email protected]@ccc"; 

    // This can be easiliy FileReader or any Reader 
    Reader sr = new StringReader(a); 

    // This can be any Writer (ie FileWriter) 
    Writer wr = new StringWriter(); 

    for (;;) { 
     int c = sr.read(); 
     if (c == -1) { //EOF 
     break; 
     } 
     if (c == '@') { 
     String var = readVariable(sr); 
     String val = getValue(var); 
     wr.append(val); 
     } 
     else { 
     wr.write(c); 
     } 
    } 
    } 

    /** 
    * This finds the value from Map, or somewhere 
    */ 
    private static String getValue(String var) { 
    return null; 
    } 

    private static String readVariable(Reader sr)throws Exception { 
    StringBuilder nameSB = new StringBuilder(); 
    for (;;) { 
     int c = sr.read(); 
     if (c == -1) { 
     throw new IllegalStateException("premature EOF."); 
     } 
     if (c == '@') { 
     break; 
     } 
     nameSB.append((char)c); 
    } 
    return nameSB.toString(); 
    } 
} 

आप इसे एक छोटा सा पॉलिश करने के लिए है, लेकिन इतना ही है।

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