场景:程序员都不喜欢看文档,而更喜欢抄例子。所以,我们把平台组的组件都做成例子供别人参考。我们前端展示层使用的是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>”是显示不出来的,这个时候可以采用字符转义的方式,比如:
${'</@cfw.column''},这样显示的结果就是:</@cfw.column>
var row = $('#datagrid').datagrid('getSelected');
var activityId = "${activityId}";
var result = "${r'${"+activityId+"-"+row.eleId+"}'}";