#java #freemarker
Вопрос:
Я пытаюсь передать коллекцию Freemarker:
Мой внутренний класс получателя:
@Data private class Recipient { private String phone; private String languageValue; }
Мой шаблон:
lt;#list recipients as recipientgt; { "address": "${recipient.phone}", "language": "en" } lt;/#listgt;
Мой Java-код:
List lt;Recipientgt; recipientList = new ArrayList lt;gt; (); Recipient r = new Recipient(); r.setPhone("123"); recipientList.add(r); Template template = new Template("name", new StringReader(myTemplate), new Configuration()); Writer out = new StringWriter(); Maplt;String, Objectgt; dataModel = new HashMaplt;gt;(); dataModel.put("recipients", recipientList); template.process(dataModel, out);
Но я получаю эту ошибку:
[пул-1-поток-7] freemarker.время выполнения: Ошибка при выполнении шаблона FreeMarker freemarker.core.Исключение InvalidReferenceException: Следующее значение равно нулю или отсутствует:==gt; получатель.телефон [в шаблоне «имя» в строке 1, столбец 220]
Что случилось? Пожалуйста, помогите. Спасибо.
Комментарии:
1. Для меня, скорее всего, ошибка говорит о том, что класс получателя не является общедоступным. Можете ли вы убедиться, что вы запускаете ту же версию, что и здесь? Я только что протестировал его, и он работает на меня.
2. Я не вижу здесь никаких проблем. Вы уверены, что точно показываете вещи в своем вопросе? Например, может быть, в реальном приложении у вас есть
Recipient
гдеphone
находитсяnull
.