使用 Freemarker 创建您自己的自定义助手?

发布于 2024-09-08 02:04:16 字数 297 浏览 4 评论 0原文

从我的控制器中,我设置了模型和视图,如下所示:

ModelAndView mav = new ModelAndView();

mav.setView("index");

mav.addObject("user", user);
mav.addObject("someCollection", someCollection);

return mav;

现在我想创建一个辅助类型对象,它将采用 someCollection 和用户对象作为参数。

我的辅助函数将输出一些 HTML 等,这可能吗?

From my controller I set my Model and view like:

ModelAndView mav = new ModelAndView();

mav.setView("index");

mav.addObject("user", user);
mav.addObject("someCollection", someCollection);

return mav;

Now I want to create a helper type object that will take the someCollection and the user object as parameters.

My helper function will output some HTML etc., is this possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

情深如许 2024-09-15 02:04:16

您可以使用 FTLJava,将它们暴露给您的模板并以与通常使用内置宏/指令相同的方式调用它们。

You can write macros and directives using FTL or Java, expose them to your templates and invoke them same way you normally do with built-in macros/directives.

静赏你的温柔 2024-09-15 02:04:16

没有什么可以阻止您将任何 Java 对象(例如帮助程序实例)放入模型中,然后使用如下语法调用它的方法:${helper.myMethod(arg)}

Nothing prevents you from putting any Java object, e.g. a helper instance, to the model and then call a method of it using the syntax like this: ${helper.myMethod(arg)}.

春庭雪 2024-09-15 02:04:16
/**
 * Add logotype logotype1AsBase64.
 * @return
 * @throws IOException 
@ModelAttribute("logotype1AsBase64")
public String getLogotype() 
        throws IOException {
    return logotypeService.getLogotype();
}
*/

@ModelAttribute
public void addAttributes(Model model) throws IOException {
    //...
    model.addAttribute("logotype1AsBase64", logotypeCacheServ.getImage("logotypeInEnglish1From20190101.png"));
    //...
}

然后使用它:

<img src="<#if locale == 'specificLocale'>${logotype1AsBase64}></#if>" alt="description for picture">

如果设置是这样的话, model 属性可以包含除 base64 之外的更多 html 标识。

/**
 * Add logotype logotype1AsBase64.
 * @return
 * @throws IOException 
@ModelAttribute("logotype1AsBase64")
public String getLogotype() 
        throws IOException {
    return logotypeService.getLogotype();
}
*/

@ModelAttribute
public void addAttributes(Model model) throws IOException {
    //...
    model.addAttribute("logotype1AsBase64", logotypeCacheServ.getImage("logotypeInEnglish1From20190101.png"));
    //...
}

Then to use it:

<img src="<#if locale == 'specificLocale'>${logotype1AsBase64}></#if>" alt="description for picture">

And the model attribute can contain more html other than base64 for logotype, if the setup is as such.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文