2011-06-02 1 views
11

Мне нужно создать несколько текстов электронной почты. Ничего необычного, просто замените что-то вроде @[email protected] с реальной стоимостью. Нет изображений, нет форматирования и т.п.Простой java lib для шаблонов текста?

Что вы можете посоветовать по java lib? Чем проще, тем лучше.

ответ

5

Вы можете дать Velocity или Freemarker выстрел. Я использовал оба в моделях шаблонов электронной почты. Они обеспечивают простой синтаксис для основных случаев использования, но вы можете стать довольно сложными позже!

Из двух лично я предпочитаю Freemarker, потому что они сделали очень хорошую работу по предоставлению всех видов встроенных функций, которые делают номера форматирования и текст очень простыми.

1

Попробуйте Apache Velocity или FreeMarker, они могут быть полезны для меня, я использую FreeMarker

0

Согласованного, скорость Apache является хорошим вызовом для встраиваемых ситуаций.

Если вы хотите автономный продукт, вы также можете использовать Ant. Он уменьшает шаблон в задаче копирования, применяя фильтры замещения.

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(); 
    } 
} 

Вы должны полировать это немного, но это все.