Excepción de referencia no válida de Freemarker.
Estoy intentando pasar una colección a Freemarker:
Mi clase interna Recipient:
@Data
private class Recipient {
private String phone;
private String languageValue;
}
Mi plantilla:
<#list recipients as recipient>
{
"address": "${recipient.phone}",
"language": "en"
}
Mi código Java:
List<recipient> recipientList = new ArrayList<>();
Recipient r = new Recipient();
r.setPhone("123");
recipientList.add(r);
Template template = new Template("name", new StringReader(myTemplate), new Configuration());
Writer out = new StringWriter();
Map<string, object=""> dataModel = new HashMap<>();
dataModel.put("recipients", recipientList);
template.process(dataModel, out);
Pero estoy recibiendo este error:
> [pool-1-thread-7] freemarker.runtime: Error executing FreeMarker template freemarker.core.InvalidReferenceException: The following has evaluated to null or missing: recipient.phone [in template "name" at line 1, column 220]
¿Qué está mal? Por favor ayuda. Gracias.</string,>
davy.ai
En tu código Java, estás estableciendo el número de teléfono del destinatario, pero no el valor de idioma. Sin embargo, en tu plantilla Freemarker, estás intentando acceder a recipient.phone y recipient.language, lo que significa que el languageValue está nulo o ausente.
Para solucionar esto, necesitas establecer el languageValue para los destinatarios en tu código Java:
Luego, en tu plantilla Freemarker, puedes acceder a recipient.languageValue en lugar de recipient.language:
Esto debería resolver el problema y permitirte pasar la colección a Freemarker satisfactoriamente.