freemaker的${}
时间: 2023-11-01 14:56:28 浏览: 32
在Freemarker中,${}是用来引用变量或表达式的特殊符号。模板引擎会将${}中的内容解析成相应的值,并输出到生成的文本中。如果想要在输出中显示${}符号本身,可以使用转义字符进行转义,如示例2所示,使用${r'$'}可以输出$符号。
解决方案是在Java的freemaker中直接输入${}即可,如示例3所示,在模板中的${'$' '{' 'myStr' '}'}将会被解析成相应的值并输出。
相关问题
freemarker
FreeMarker是一个用于生成HTML Web页面的模板引擎。它被设计用于将视图从业务逻辑中分离,通过模板来生成页面并展示数据。虽然FreeMarker具有一些编程能力,但通常由Java程序准备要显示的数据,然后由FreeMarker生成页面。它不是一个Web应用框架,而是适合作为Web应用框架的一个组件。FreeMarker与容器无关,可以应用于非Web应用程序环境。它更适合作为Model2框架(如Struts)的视图组件,也可以在模板中使用JSP标记库。FreeMarker具有强大的模板语言,支持常用的指令、循环结构、变量定义和复杂表达式等。它还提供了通用数据模型,可以方便地处理各种数据。\[2\]
在使用FreeMarker时,可以在webapp目录下创建template文件夹,并在其中创建模板文件。模板文件使用HTML标签和FreeMarker注释语法来定义页面结构和逻辑。可以通过${}语法来引用数据并在页面中展示。\[3\]
要启动使用FreeMarker的项目,需要在项目的依赖中添加FreeMarker的相关配置。可以在pom.xml文件中添加如下依赖配置:
```xml
<dependency>
<groupId>org.FreeMarker</groupId>
<artifactId>FreeMarker</artifactId>
<version>2.3.29</version>
</dependency>
```
这样就可以在项目中使用FreeMarker来生成页面了。\[1\]
#### 引用[.reference_title]
- *1* [FreeMarker简介及使用示例](https://blog.csdn.net/qq_39326472/article/details/131264082)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [FreeMarker详细介绍](https://blog.csdn.net/weixin_44454512/article/details/109877418)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
springboot整合freemarker时${xxx?html}报错
在使用Freemarker的时候,我们有时候需要对输出的HTML进行转义,以避免XSS攻击等安全问题。而在Freemarker中,可以使用`${xxx?html}`的方式进行HTML转义,但是在Spring Boot中,如果直接使用`${xxx?html}`的方式,会出现报错的情况。
要解决这个问题,可以在Spring Boot的配置文件application.properties中添加以下配置:
```
spring.freemarker.template.utility-escaping=false
```
或者在Spring Boot的配置类中添加以下配置:
```
@Configuration
public class FreemarkerConfig {
@Autowired
private freemarker.template.Configuration configuration;
@PostConstruct
public void setSharedVariable() {
configuration.setBooleanFormat("true,false");
configuration.setClassicCompatible(true);
configuration.setNumberFormat("#");
configuration.setDateTimeFormat("yyyy-MM-dd HH:mm:ss");
configuration.setDateFormat("yyyy-MM-dd");
configuration.setTimeFormat("HH:mm:ss");
configuration.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
configuration.setWhitespaceStripping(true);
configuration.setSharedVariable("html_escape", new HtmlEscape());
}
}
```
其中,HtmlEscape是一个自定义的Freemarker工具类,代码如下:
```
public class HtmlEscape implements TemplateMethodModelEx {
@Override
public Object exec(List arguments) throws TemplateModelException {
if (arguments != null && arguments.size() > 0) {
SimpleScalar simpleScalar = (SimpleScalar) arguments.get(0);
String value = simpleScalar.getAsString();
return StringEscapeUtils.escapeHtml(value);
}
return null;
}
}
```
这样配置之后,就可以在Spring Boot中正常使用`${xxx?html}`进行HTML转义了。