expressions español commentary comentario java freemarker

español - ¿Cómo llamo a los métodos java en un objeto desde una plantilla de FreeMarker?



freemarker maven (2)

¿Es posible llamar a un método que toma parámetros de una plantilla de Freemarker?

Tengo un modelo de objeto que estoy tratando de representar con Freemarker en una página web. Uno de los objetos tiene un método para obtener una lista secundaria de su contenido, tomando un parámetro que se usa para filtrar la lista:

public List getunits(final String type);

Sé que en JSP no puede hacer esto directamente, pero puede escribir funciones personalizadas que le permitirán lograr el resultado que desea. ¿Cómo resuelves esto en Freemarker? ¿Es lo mismo con escribir funciones personalizadas? ¿O hay alguna manera de llamar realmente a este tipo de función?


Como dijo ChssPly76 , puede realizar la llamada al método desde una plantilla de Freemarker, siempre que exponga el objeto en el modelo.

Pero es importante tener en cuenta que si su método devuelve NULL (por el motivo que sea), obtendrá una confusión.

Expression myBean.getunits() is undefined on line ....

Para evitar esto, deberías usar myBean.getunits(...)! (observe el signo de exclamación).

Obtenga más información sobre cómo Freemarker maneja los nulos aquí: http://freemarker.org/docs/dgui_template_exp.html#dgui_template_exp_missing


FreeMarker permite invocar métodos que se pusieron a disposición a través del modelo desde expressions .

Suponiendo que su objeto haya sido expuesto como myBean , puede invocar el método de la siguiente manera:

<#list myBean.getunits("myType") as unit> do stuff with ${unit} </#list>

Por supuesto, no tiene que usar <list> , solo está ahí como ejemplo, ya que su método devuelve una lista.