【转】Freemarker输出$和html标签等特殊符号

时间:2022-09-16 18:57:59

      原文:http://blog.csdn.net/achilles12345/article/details/41820507 

  场景:程序员都不喜欢看文档,而更喜欢抄例子。所以,我们把平台组的组件都做成例子供别人参考。我们前端展示层使用的是freemarker,所以遇到这个问题,比如我们要让前端显示freemarker自己的源码时就有问题了(因为我们例子程序的页面也是使用freemarker)。遇到的问题如下:

        1、如何显示html源码,而不是让浏览器解析这些html,方法是使用freemarker的html转义。

              比如我们显示img标签,就是如此:${'<img src="xxxxxxx"/>'?html},这样最终在页面上展示的内容就是:<img src="xxxxxxx"/>,而不会被浏览器解析。

         2、显示freemarker源码,比如${}符号,则可以如下:

              ${r'${obj.name}'},这样最终显示的结果就是:${obj.name},而不会被freemarker解析。这里要注意,前边那个标红的“r”字符是关键点。

         3、自定义宏的结束符号不能出来的解决办法:比如我们自定义了个宏叫做:<@cfw.column></@cfw.column>,如果要显示源码,结束的那个符号"</@cfw.column>”是显示不出来的,这个时候可以采用字符转义的方式,比如:

              ${'&lt;/@cfw.column''},这样显示的结果就是:</@cfw.column>