Cómo obtener todos los parámetros del modelo desde el árbol de análisis sintáctico de Freemarker?
Caso:
Cuando estoy aplicando una plantilla FTL en mi sistema, quiero resolver todos los parámetros del modelo desde la plantilla para que los usuarios sepan cómo pasar estos parámetros en lugar de leer toda la plantilla.
Ejemplo:
SELECT
platform
FROM
(
<#list tableList as table>
SELECT
__time,
platform
FROM
${table}
<#if table_has_next>UNION ALL
)
WHERE
__time BETWEEN TIMESTAMP '${startTime}' AND '${endTime}'
GROUP BY
1
Después de llamar a un método, el resultado puede ser en el siguiente formato:
{
"startTime" : "",
"endTime": "",
"tableList": null
}
Intenté usar el rootElement generado por JavaCC en el núcleo de Freemaker, pero no es público y arroja un error.
¿Alguien puede ayudarme?
davy.ai
Para resolver este problema, puedes utilizar la interfaz
TemplateModel
proporcionada por FreeMarker. La interfazTemplateModel
provee métodos para obtener todos los parámetros del modelo desde la plantilla.Aquí te mostramos cómo puedes implementar esto:
Template
como parámetro.Obtén el objeto
TemplateModel
usando el métodogetDataModel()
del objetoTemplate
:TemplateModel
aBeansWrapper
:Map
que contiene todos los parámetros del modelo usando el métodounwrap()
deBeansWrapper
:paramMap
e imprime los nombres de los parámetros:Puedes modificar el código anterior según tus necesidades. Este método te ayudará a resolver todos los parámetros del modelo de la plantilla FTL.