在Freemarker模板中,我们可以使用escape指令自动将转义应用于包含的块中的所有插值:
<#escape x as x?html>
  <#-- name is escaped as html -->
  Hallo,${name}
</#escape>

有没有办法以编程方式实现类似的效果,定义应用于模板中所有内插的默认转义,包括转义指令之外的内插?

谢谢.

解决方法

详细说明Attila的答案:您可以使用像 this one这样的类,然后如下所示包装你的模板加载器:
final TemplateLoader templateLoader = new ClasstemplateLoader(this.getClass(),templatePath) {
  /**
   * Replaces the normal template reader with something that changes the default
   * escaping to HTML as to avoid XSS attacks.
   */
  @Override
  public Reader getReader(Object templateSource,String encoding) throws IOException {
     return new WrappingReader(super.getReader(templateSource,encoding),"<#escape x as x?html>","</#escape>");
  }
};

如果您在添加的部分中不包括换行符,则不会得到行号问题.但是,您不能使用<#ftl> / [#ftl].

java – 默认在Freemarker中转义的更多相关文章

  1. ios – NSURLErrorDomain代码-1002下载pdf

    我正在尝试缓存一个网页,然后我可以使用UIWebView显示该网页.我在另一个NSURLSessionDataTask的完成块内的for循环(尝试缓存6个网页)中有相关的NSURLSessionDataTask.当我跑步时,我不断收到此错误:Ayy下载错误,数据:响应:(空)错误:错误域=NSURLErrorDomain代码=-1002“操作无法完成.(NSURLErrorDomain错误-1

  2. ios – Xcode 10 Swift构建错误:“将非转义值转换为’T’可能允许它逃脱”

    ,block:@escaping@convention–>Void){@noescape现在默认为

  3. Swift学习之每日一tip (2)词法结构

    首字符之后,标识符允许使用数字和Unicode字符组合。用作可选类型修饰,左侧必须无空白。

  4. swift 字符串字面量转义字符

    1.转义特殊字符\0(空字符)、\(反斜线)、\t、\n(换行符)、\r(回车符)、\”(双引号)、\’(单引号)。

  5. 图书连载11:字符和字符串

    您可以将字符拼接为字符串。字符拼接后,将以字符串的形式存在,所以下面的代码是错误的:字符串Swift中的字符串由若干个字符构成,并且和Obejct-C中的字符串不太一样。这里使用offsetBy参数,以字符串的startIndex位置右移7位为起点,进行字符串的截取。所以您可以对字符串进行遍历,查找和打印字符串中的每个字符。

  6. function – Swift 3可选转义闭包参数

    更改类型会出现以下错误:错误:@escaping属性仅适用于函数类型删除@escaping属性,代码编译和运行,但似乎不正确,因为完成闭包是转义函数的范围。有一个SR-2552报告,@escaping不识别功能类型别名。您可以通过扩展函数签名中的函数类型来解决:编辑::我实际上是在一个xcode8测试版,其中bugSR-2552还没有解决。解决方法迈克尔Ilseman指出作为一个临时解决方案是从可选的函数类型删除@escaping属性,保持函数作为转义。

  7. swift – unicode转义后大括号中的十六进制代码

    现在我得到这个错误,我不明白我需要做什么来纠正它在Xcode6Beta5。

  8. 为什么在Swift 3中默认情况下,闭包需要显式的“self”?

    我注意到,在Swift2.2中,用@noescape标记为非转义的关闭不需要显式的自我.在Swift3中,默认情况下,所有的关闭都不会转义,现在要求它们被标记为@escaping,如果你希望他们能够逃脱.由于默认情况下Swift3中的所有关闭都是不可逃避的,为什么要求明确的自我?

  9. swift – 为什么String.addingPercentEncoding()的返回值是可选的?

    文档说,如果转换是不可能的,该方法返回nil,但是在什么情况下,转义转换可能会失败呢?结果,可以以不成对的UTF-16代理字符的形式成功创建包含无效Unicode的Swift字符串.这样的字符串可能导致UTF-8编码失败.这里有一些代码说明了这个行为:

  10. android – Intent过滤pathPrefix,’#’不起作用

    我正在尝试设置一个intent过滤器,以便在用户单击以下URI时启动我的活动:example.com/pathA/pathB/#pathC/someGUID所以我在清单文件中添加了以下XML:我在想,’#’char正在搞乱,但我试图逃避这个char而没有运气.有任何想法吗?更新:当我说“尝试转义”时,我的意思是使用百分比编码(#qualals#)解决方法Intent过滤器使用UriMatcher来

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部