FreeMarker是一个基于Java的模板引擎,是一个基于模板生成文本输出(从HTML到自动生成的源代码)的通用工具。它是一个Java包,是Java程序员的类库。它本身并不是最终用户的应用程序,而是程序员可以嵌入到他们的产品中的东西。
我正在 ClickDimenions Microsoft Dynamics 数据库上为客户发送个性化 HTML 电子邮件,并希望省略名字字段中的特殊字符,例如,如果某人有一个名字...
如何在 Jive 中从 FTL 设置 Java bean 的值?
我是 Jive 和 Freemarker 的新手。 我尝试了以下方法,就像我们在 Struts 中所做的那样: 我是 Jive 和 Freemarker 的新手。 我尝试了以下方法,就像我们在 Struts 中所做的那样: <input size=40 name="bvProperties.fileBasedQueueLocation" type="text" value="${badgeVilleProperties.fileBasedQueueLocation!''}" style="float: right;"/> 需要将 fileBasedQueueLocation 变量的值设置为 bvProperties bean,该值在操作中可用。 我还创建了一个 setter,以及 bvProperties 的 getter 方法。 您应该尝试的语法: <input size=40 name="bvProperties.fileBasedQueueLocation" type="text" value="${(badgeVilleProperties.fileBasedQueueLocation)!}" style="float: right;"/>
在 ADT 中,有一个名为 viewUrl 的变量:它打开 AssetPublisher 内部的资源。现在我想要的是,不仅在 AssetPublisher 内打开资产,而且在新页面中打开资产.. 所以 as...
我们有一个“项目”列表进入 Freemarker PDF 模板。该列表的每个“项目”都有多个值。该列表按默认值排序,但我们想按 &q 排序...
Freemarker:从模板文件 (*.ftl) 调用静态 util 方法
在 Freemarker FTL 文件中,我想调用 StringUtils.capitalize(myString)。例如: 您选择了 ${selectionString}。 ${StringUtils.capitalize(selectionString)} 很... 在 Freemarker FTL 文件中,我想调用 StringUtils.capitalize(myString)。例如: <p>You selected ${selectionString}.</p> <p>${StringUtils.capitalize(selectionString)} is great.</p> 我可以以某种方式导入org.apache.commons.lang3.StringUtils吗? 首先,将这些代码添加到您的Controller: BeansWrapper wrapper = new BeansWrapper(new Version(2,3,27)); TemplateModel statics = wrapper.getStaticModels(); model.addAttribute("statics", statics); 然后,在您的 .ftl 文件中,像这样定义类: <#assign YourUtilClass=statics['com.springboot.util.YourUtilClass']> (['']中包含的路径是类的路径) 最后,您可以像这样访问静态方法: ${YourUtilClass.yourMethod(someParams)} 你不能#import一个类,只能使用其他模板。 请注意,只要将 #assign StringUtils=statics['org.apache.commons.lang3.StringUtils'] 作为 objectWrapper.getStaticModels() 添加到 statics 中的共享变量集或将其添加到数据模型中,就可以使用 Configuration 获得类似的结果。
如何在Freemarker模板中访问Spring MVC模型对象?
Spring MVC 和 FreeMarker 框架的新功能。按照本教程开始使用它。当我尝试添加更多模型对象并在 freemarker 模板中访问它时。但这没有用。我是
Spring Boot 无法解析 Freemarker 视图
我第一次尝试使用 Spring Boot 来显示 Freemarker 视图,目前在浏览器中出现以下错误: 白标错误页面 该应用程序没有
我需要一些帮助来从属性(在 body 字段中)获取所有值,并在 freemarker 的列表中进行转换,以将每个值与另一个列表中的可能值进行比较。 下面是
我是 Freemarker 的新手,我需要一些帮助来从属性(在 body 字段中)获取所有值,并在 freemarker 的列表中进行转换,以将每个值与另一个列表中的可能值进行比较。
如何从Liferay 7.4中的ddmfieldattribute表中获取字段smallAttributeValue?
Liferay 7.4 将结构数据存储在“ddmfieldattribute”表中。我试图获取 ADT 模板中结构的字段,但找不到解决方案。 结构有...
我刚刚将 Struts 2 版本升级到 2.5.2,并开始出现错误。我的应用程序甚至无法启动。我对 pom.xml 和 web.xml 进行了更改。我不确定我是否错过了任何课程...
无法从 Spring Boot 方法返回 Freemarker 视图
目前,我正在做一个小项目,需要使用Spring Boot和FreeMarker模板引擎。我尝试了不同的方法,但仍然无法从 Spring Boot 返回 FreeMarker 视图。我的
JspTaglib [“http://tiles.apache.org/tags-tiles”]未定义:它无法分配给tiles
我正在对一个非常旧的Java项目进行更新转换,并在Spring Boot下进行转换。但是,我很难渲染首页,因为它们是用 Struts 2 构建的......
我是 freemarker 的新手。 在 freemarker 中,我想对 DateTime 执行算术表达式,如下所示: ${triggerTimestamp}-1h 但这是行不通的。有人可以帮忙吗?
我正在使用 Struts 2 和 Freemarker。这是我的动作课: 封装测试; 导入java.util.ArrayList; 导入java.util.List; 公共类WelcomeAction { 私有字符串用户名; 公关...
Freemarker.core.InvalidReferenceException 尝试验证用户输入时出现错误 Apache FreeMarker出租物业
有这样的ftlh文件和注册表: 出租物业 有这样的ftlh文件和注册表: <!DOCTYPE html> <html lang="en"> <head> <title>Rental Property</title> </head> <body> <h2>User Registration</h2> <form action="/registration" method="POST"> <label for="name">Name:</label> <input type="text" id="name" name="name" value="${userForm.name!}" required> <#if errors?? && errors?has_content && errors.hasFieldErrors("name")> <div style="color:red;">${errors.getFieldError('name').defaultMessage}</div> </#if> <label for="lastName">Last Name:</label> <input type="text" id="lastName" name="lastName" value="${userForm.lastName!}" required> <#if errors?? && errors?has_content && errors.hasFieldErrors("lastName")> <div style="color:red;">${errors.getFieldError("lastName").defaultMessage}</div> </#if> <label for="email">Email Address:</label> <input type="email" id="email" name="email" value="${userForm.email!}" required> <#if errors?? && errors?has_content && errors.hasFieldErrors("email")> <div style="color:red;">${errors.getFieldError("email").defaultMessage}</div> </#if> <label for="phone">Phone:</label> <input type="tel" id="phone" name="phone" value="${userForm.phone!}"> <#if errors?? && errors?has_content && errors.hasFieldErrors("phone")> <div style="color:red;">${errors.getFieldError("phone").defaultMessage}</div> </#if> <label for="password">Password:</label> <input type="password" id="password" name="password" required> <#if errors?? && errors?has_content && errors.hasFieldErrors("password")> <div style="color:red;">${errors.getFieldError("password").defaultMessage}</div> </#if> <label for="replayPassword">Repeat Password:</label> <input type="password" id="replayPassword" name="replayPassword" required> <#if errors?? && errors?has_content && errors.hasFieldErrors("replayPassword")> <div style="color:red;">${errors.getFieldError("replayPassword").defaultMessage}</div> </#if> <label for="birthday">Date of Birth:</label> <input type="date" id="birthday" name="birthday"> <#-- <#if errors?has_content && errors.hasFieldErrors("birthday")>--> <#-- <div style="color:red;">${errors.getFieldError("birthday").defaultMessage}</div>--> <#-- </#if>--> <button type="submit">Register</button> </form> </body> </html> 有这样一种post请求处理方法: @PostMapping("/registration") public String registration(@ModelAttribute @Valid UserForm userForm, BindingResult result, Model model) { userValidator.validate(userForm, result); model.addAttribute("errors", result); if (result.hasErrors()) return "registration"; return "redirect:/"; } UserForm.java 类的每个字段上方是来自 jakarta.validation.constraints 的验证注释以及自定义验证器类。 当尝试在此控制器方法内发送有错误的数据时,验证将按其应有的方式工作,查找所有错误,并在尝试向用户显示不正确的数据时发生错误: freemarker.core.InvalidReferenceException: The following has evaluated to null or missing: ==> errors.getFieldError('name') [in template "registration.ftlh" at line 14, column 35] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${errors.getFieldError("name").defaul... [in template "registration.ftlh" at line 14, column 33] ---- at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134) ~[freemarker-2.3.33.jar:2.3.33] at freemarker.core.UnexpectedTypeException.newDescriptionBuilder(UnexpectedTypeException.java:85) ~[freemarker-2.3.33.jar:2.3.33]... 我尝试将 ftlh 文件中的错误键更改为单引号,更改验证,发送整个组装的 UserForm 对象。 我怀疑问题是您没有启用公开 Java 8 默认方法。它是必需的,因为 FreeMarker 基于 java.beans.Introspector(官方 JavaBeans 内省器),而它忽略了它们。因此,正如 2.3.26 的版本历史记录所示(https://freemarker.apache.org/docs/versions_2_3_26.html): 添加了解决方法(默认情况下未启用)以将 Java 8 默认方法(以及它们定义的 bean 属性)公开给模板,尽管 java.beans.Introspector(官方 JavaBeans 内省器)会忽略它们,至少从 JRE 1.8.0_66 开始是这样。要启用此解决方法,请将 incompatibleImprovements 或 DefaultObjectWrapper 的 BeansWrapper 构造函数参数的值增加到 2.3.26,或者将其 treatDefaultMethodsAsBeanMembers 设置设置为 true。请注意,如果您将 object_wrapper 的 Configuration 设置保留为默认值,则将 incompatibleImprovements 的 Configuration 设置增加到 2.3.26 就足够了,因为它是由默认 object_wrapper 继承的。 我的建议是增加 incompatibleImprovements 的 Configuration 设置。否则,会模拟一些令人惊讶的问题以实现 100% 向后兼容性。有一个关于如何设置它的页面: https://freemarker.apache.org/docs/pgui_config_inknown_improvements.html#pgui_config_inknown_improvements_how_to_set
Velocity 还是 FreeMarker? 它们看起来几乎相同,甚至语法也是如此? 用什么?或者什么时候用什么?
Joda ISODateTimeFormat 不在字符串中使用时区
我有一个由两部分组成的问题,或者可能有两种不同的方法来解决这个问题。我收到一个类似于 2015-11-17T17:10:24-0800 的 ISO 字符串。最终目标是在某些 HTML 中将字符串显示为 11/17/15 5:10 PM
使用 N/render addRecord 将记录添加到渲染器时出现问题
我正在开发一个在新窗口中显示支票 PDF 的 Suitelet。一切都按预期工作,只是我现在在渲染 PDF 本身时遇到了问题。 常量 renderPdfTemplate = (
Spring Boot Freemarker 不会显示 html 页面
我有一个 Spring Boot 应用程序,我需要在其中使用 Freemarker 在浏览器中显示 HTML 页面。 我是 Freemarker 新手,我什至很难显示一个简单的 HTML 页面,而且我不知道...