freemarker 相关问题

FreeMarker是一个基于Java的模板引擎,是一个基于模板生成文本输出(从HTML到自动生成的源代码)的通用工具。它是一个Java包,是Java程序员的类库。它本身并不是最终用户的应用程序,而是程序员可以嵌入到他们的产品中的东西。

尝试连接字符串数组,使它们出现在使用 FTL 模板的下一行

这里是字符串数组,myArray = ["green","blue","red"],我想在 html 页面的下一行显示每个值 “绿色的” “蓝色的” “红色的” 我...

回答 1 投票 0

如何检查 ftl 文件中是否存在特定的 xml 标签

我有一个如下所示的 xml 文件。 <

回答 0 投票 0

如何从 liferay 7.4 中的菜单和面包屑中获取 instance_id

我正在尝试在主题中插入带有模板的自定义菜单,但我没有足够的信息。我有这个代码<@liferay.navigation_menu instance_id="XXX" />,但我不知道怎么...

回答 0 投票 0

从 FTL 中的 Json 数据计算月数

我是 ftl 的新手,我有一个由 ftlh 文件读取的下面的 json。我正在尝试创建一个表,我需要将同一个月的列组合在一起。为此,我需要计算相同的 m...

回答 0 投票 0

在 Maven 中使用 freemarker

抱歉,如果这个问题看起来有点愚蠢,我正在为一个项目发现 Maven 和 Freemarker,在浏览 Freemarker 的文档时,我看到了要放入 pom.xml 文件以包含 freem 的 xml 代码...

回答 0 投票 0

Netsuite 高级 PDF/模板 - 仅显示项目组 - 无套件项目

我们目前将我们的装箱单从基本的 PDF 版本移动到高级 PDF/HTML 模板,并遇到了在装箱单上显示项目组的问题。 Item 上的 XML 数据

回答 0 投票 0

如何得到InputStream作为FreeMarker处理的结果?

我有一个界面: 公共接口资源{ 输入流是(); } 我想编写一个提供 Freemarker 处理结果的实现: 公共类 FreemarkerResource 实现

回答 0 投票 0

避免java包'freemarker'执行命令

我使用 Apache Freemarker 作为我的模板引擎。 我有一个安全问题,我不确定如何处理: 管理员用户能够修改模板,但万一他们将设置输入...

回答 1 投票 0

Freemarker 模板:调用 java 方法并将返回的字符串用作 html

我有一个 ftl freemarker 模板文件,我将一些对象(包含所需元素的列表)传递给它并尝试处理 html 输出页面。问题是我需要实施一些补偿......

回答 1 投票 0

Freemarker ftl 模板调用 java 方法并使用返回的 html 字符串

我有一个 ftl freemarker 模板文件,我将一些对象(包含所需元素的列表)传递给它并尝试处理 html 输出页面。问题是我需要实施一些补偿......

回答 0 投票 0

如何以 FreeMarker 形式发送浮点值(type number 只允许整数)

美好的一天。你能帮我解决我的问题吗。我正在努力以 Apache Free Marker 形式发送浮点值。我有 type=number,但它只允许整数。如果我将类型更改为文本,我将丢失 ch ...

回答 0 投票 0

Keycloak 添加自定义 Freemarker 页面并访问它

Keycloak有问题(我是新手): 我们设置并运行了 Keycloak,定义了一个使用的自定义主题。当应用程序中的特定事件发生时,我希望用户登录...

回答 1 投票 0

Freemarker 一个接一个地申请加入

得到这样一个数据: { “key1” : [ “value1”, “value2” ], “key2”:[“value3”,“value4”], “key3”:[“value5”,“

回答 1 投票 0

多个 fo:retrieve-marker 同名

两个页脚具有相同的 fo:retrieve-marker、retrieve-class-name 和 retrieve-boundary,如果我用 fo:mar 调用标记类名称,现在唯一不同的是检索位置。 .

回答 0 投票 0

在 spring boot 中从 freemaker 获取“以下已评估为空或缺失”

我有以下 pom.xml 文件。 我有以下 pom.xml 文件。 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.0.2</version> <relativePath /> <!-- lookup parent from repository --> </parent> <groupId>com.chat</groupId> <artifactId>app</artifactId> <version>0.0.1-SNAPSHOT</version> <name>app</name> <description>A chat application written in spring boot</description> <properties> <java.version>17</java.version> <spring-boot-admin.version>3.0.0-M4</spring-boot-admin.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> </dependency> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-tracing-bridge-brave</artifactId> </dependency> <dependency> <groupId>io.zipkin.reporter2</groupId> <artifactId>zipkin-reporter-brave</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j --> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.0.32</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.restdocs</groupId> <artifactId>spring-restdocs-mockmvc</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-dependencies</artifactId> <version>${spring-boot-admin.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.asciidoctor</groupId> <artifactId>asciidoctor-maven-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <id>generate-docs</id> <phase>prepare-package</phase> <goals> <goal>process-asciidoc</goal> </goals> <configuration> <backend>html</backend> <doctype>book</doctype> </configuration> </execution> </executions> <dependencies> <dependency> <groupId>org.springframework.restdocs</groupId> <artifactId>spring-restdocs-asciidoctor</artifactId> <version>${spring-restdocs.version}</version> </dependency> </dependencies> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project> 我有以下控制器类。 package com.example.demo; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestParam; @Controller public class Controllers { @GetMapping("/signup") public String getSignUpPage(@RequestParam String name, @ModelAttribute ModelMap modelMap) { System.out.println("Name is: " + name); modelMap.addAttribute("name", name); return "signup"; } } 我有以下 freemaker 模板文件。 <html> <head></head> <body> <h1>Hello, ${name}</h1> </body> </html> 当我访问 http://localhost:8080/signup?name=rahul 时,出现以下错误。 Hello, FreeMarker template error (DEBUG mode; use RETHROW in production!): The following has evaluated to null or missing: ==> name [in template "signup.ftlh" at line 6, column 22] ---- 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. (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: ${name} [in template "signup.ftlh" at line 6, column 20] ---- Java stack trace (for programmers): ---- freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...] at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134) at freemarker.core.EvalUtil.coerceModelToTextualCommon(EvalUtil.java:481) at freemarker.core.EvalUtil.coerceModelToStringOrMarkup(EvalUtil.java:401) at freemarker.core.EvalUtil.coerceModelToStringOrMarkup(EvalUtil.java:370) at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:104) at freemarker.core.DollarVariable.accept(DollarVariable.java:63) at freemarker.core.Environment.visit(Environment.java:335) at freemarker.core.Environment.visit(Environment.java:341) at freemarker.core.Environment.process(Environment.java:314) at freemarker.template.Template.process(Template.java:383) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.processTemplate(FreeMarkerView.java:329) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.doRender(FreeMarkerView.java:264) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.renderMergedTemplateModel(FreeMarkerView.java:215) at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:179) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:314) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1414) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1158) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1097) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:973) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:705) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:109) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:859) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1734) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:833) 为什么会出现这个问题? 我的目录结构 我认为你不应该在那里使用@ModelAttribute。试试这个: @GetMapping("/signup") public String getSignUpPage(@RequestParam String name, Model model) { 我还将 ModelMap 更改为 org.springframework.ui.Model 作为更通用的方法。 根据 https://freemarker.apache.org/docs/pgui_misc_servlet.html Freemarker 还会自动将请求参数放入 RequestParameters 哈希变量中。所以你甚至不需要自己将参数放入模型中,这个 freemarker 代码就足够了: <h1>Hello, ${RequestParameters.name}</h1> 看起来 freemarker 2.3.32 不能使用 spring boot 3。 例如,以下代码适用于 spring boot 2.6.7、freemarker 2.3.31,但不适用于 spring boot 3.0.4 <h1>Hello, ${RequestParameters.name}</h1> 你会得到这样的异常: Hello, FreeMarker template error (DEBUG mode; use RETHROW in production!): The following has evaluated to null or missing: ==> RequestParameters [in template "main.ftl" at line 24, column 18] ---- 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. (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: ${RequestParameters.name} [in template "main.ftl" at line 24, column 16] ---- Java stack trace (for programmers): ---- 我认为 Freemarker 仍然使用旧的 java ee 包,如 javax.servlet 而不是 jakarta.servlet

回答 2 投票 0

在NetSuite中,如何在高级PDF/HTML模板中打印相关记录

我在 NetSuite 中创建了一张发票。我还接受了 PAYMENT 并在我创建的发票上应用了 CREDIT。有谁知道如何打印出相关记录,这是一个“列表”类型,包含...

回答 2 投票 0

Checkbox 值在 false 时不绑定到对象中?

我使用 ModelAttribute 在 Spring Web 应用程序中绑定对象。 一旦我注意到,如果一个对象的布尔值 A 为真,那么如果我们取消选中 A 的复选框,它的值将不会更新。 对于

回答 4 投票 0

如何在 Spring 中从现有 bean 创建 bean 列表

我正在将一个旧的 Spring 项目迁移到 SpringBoot。旧项目具有基于 XML 的配置。 我在旧配置中有一个 beans 声明列表,如下所示: 我正在将一个旧的Spring项目迁移到SpringBoot。旧项目具有基于XML的配置。 我在旧配置中有一个 beans 声明列表,如下所示: <bean id="basic" class="com.xyz.Parameter" abstract=true> </bean> <!-- List --> <util:list id="searches"> <bean parent="basic" id="roles"> <property name="name" value="abc"> ... ... </bean> <bean parent="basic" id="simple"> <property name="name" value="abc"> ... ... </bean> <bean parent="basic" id="user"> <property name="name" value="abc"> ... ... </bean> </util:list> 现在,在 Java 配置文件中,我正在做如下操作: @Configuration class WebConfig{ @Bean ("Basic") public Parameter basic(){ return Parameter.builder () .format (Pattern.compile("^ [A-Za-20-9]") .maxLength (100) build(); } @Bean public Parameter simple (@Qualifier ("Basic") Parameter basic){ return basic.toBuilder () .field ("attribute") .Label ("Attribute Nane").build(); } @Bean public Parameter user(@Qualifier ("Basic") Parameter basic){ Parameter product = basic. toBuilder () .field ("product") .label ("Product").build(); } //TODO: List implementation @Bean("searches") public List< Parameter> getSearch(){ return List.of(user()); //It requires params } } 计划是编制一份所有豆子的清单,并在需要时将其用作@Resource。 那么,构建 beans 列表的最佳技术是什么?我应该使用 BeanFactory 检索 bean 并将它们添加到列表中,而不是单独调用每个 bean 函数吗? 声明多个相同类型的bean后,您可以只使用@Autowired List<MyBean> myBeans;或@Autowired Map<String, MyBean> myBeans;,其中映射键是一个bean名称。 @Autowired 只是这里的一个例子,任何 Spring 注入类型都可以。 如前一个答案所述,您可以简单地注入一组具有相同类型的 bean。 有关此方法的更多信息,您可以在本文中找到

回答 2 投票 0

如何从 FreeMarker 模板调用对象上的 java 方法?

是否可以调用从 Freemarker 模板获取参数的方法? 我有一个对象模型,我正在尝试使用 Freemarker 将其呈现到网页中。其中一个对象有一个方法...

回答 2 投票 0

根据日期在 FreeMarker 中获取一年中的第几周

我需要根据字符串日期获取一年中的当前周。 例如 07.03.2023 => 2023 年第 10 周 在文档中,我找到了很多帮手,但一年中的那一周都没有。 <#assign aDate = theD...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.