подтверждение по электронной почте - создайте шаблоны и объедините их с объектом - PullRequest
0 голосов
/ 09 февраля 2012

Мне нужно реализовать подтверждение по электронной почте в моем веб-приложении на Java.Я застрял с электронным письмом, которое я должен отправить пользователю.

Мне нужно объединить шаблон (письма с подтверждением) с объектом User, и это будет HTML-содержание письма с подтверждением.
Я думал об использовании xslt в качестве движка шаблонов, но у меня нет формы xml объекта User и я действительно не знаю, как создать xml из экземпляра User.
Я думал о jsp, но как мне отрендеритьjsp страница с объектом и получить html в результате?

Есть идеи, какие пакеты я могу использовать для создания шаблонов и объединения их с объектом?

Ответы [ 3 ]

0 голосов
/ 09 февраля 2012

Насколько сложен объект пользователя? Если это всего пять строковых полей (скажем), вы можете просто указать их как строковые параметры для преобразования, избегая необходимости создавать XML из ваших данных Java.

В качестве альтернативы, процессоры Java XSLT обычно предоставляют способ вызова методов для объектов Java из кода XSLT. Таким образом, вы можете предоставить Java-объект в качестве параметра для таблицы стилей и вызывать его методы, используя функции расширения. Детали зависят от процессора.

0 голосов
/ 17 февраля 2012

Вместо того, чтобы изучать новый код, отлаживать сложный код другого, я решил написать свой собственный маленький и подходящий утилиты:

public class StringTemplate {
    private String filePath;
    private String charsetName;
    private Collection<AbstractMap.SimpleEntry<String, String>> args;

    public StringTemplate(String filePath, String charsetName,
                          Collection<AbstractMap.SimpleEntry<String, String>> args) {
        this.filePath = filePath;
        this.charsetName=charsetName;
        this.args = args;
    }

    public String generate() throws FileNotFoundException, IOException {
        StringBuilder builder = new StringBuilder();
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                getClass().getResourceAsStream(filePath),charsetName));
        try {
            String line = null;

            while ((line = reader.readLine()) != null) {
                builder.append(line);
                builder.append(System.getProperty("line.separator"));
            }
        } finally {
            reader.close();
        }
        for (AbstractMap.SimpleEntry<String, String> arg : this.args) {
            int index = builder.indexOf(arg.getKey());
            while (index != -1) {
                builder.replace(index, index + arg.getKey().length(), arg.getValue());
                index += arg.getValue().length();
                index = builder.indexOf(arg.getKey(), index);
            }
        }
        return builder.toString();
    }
}
0 голосов
/ 09 февраля 2012

Я использовал следующее раньше.Кажется, я вспомнил, что это было не сложно

http://velocity.apache.org/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...