[英]Is Javascript inlining possible in Freemarker template engine?
是否可以在Freemarker模板引擎中对复杂对象执行Javascript内联以实现Thymeleaf可以完成的工作? 例如,如Thymeleaf教程中所述 ,如果我们具有以下代码:
<script th:inline="javascript">
var user = [[${session.user}]];
</script>
${session.user}
表达式将求值为User对象,Thymeleaf会将其正确转换为Javascript语法:
<script th:inline="javascript">
var user = {'age':null,'firstName':'John','lastName':'Apricot',
'name':'John Apricot','nationality':'Antarctica'};
</script>
Freemarker中是否有类似功能?
没有任何专门用于此目的的东西。 如果要打印一个简单的字符串,可以执行以下操作:
<script>
var user = "${session.user?js_string}";
</script>
和类似的var someNumber = ${session.someNumber?c};
一个数字。 但是,没有内置的解决方案来转储复合对象。
我想知道在FreeMarjer中添加?json
(将任意对象转换为JSON(也是有效的JavaScript))是否是一个好主意(经常需要这样做),但是其安全隐患却令人恐惧。 您将对象的内容递归地转储到客户端...当开发人员将吸气剂添加到类中时,他们没有必要意识到模板将遍历整个对象图。
但是,您可以将方法添加到数据模型中,也可以将共享方法添加到Configuration
单例中,以实现此目的。 var something = ${toJS(session.something)};
。 (或者实际上, #macro
也可以做到这一点,但是它比较丑陋,而且速度稍慢。)但是请考虑如何与客户保持联系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.