Velocity转FreeMarker:HTML元素内嵌入FreeMarker条件语句可行吗?
Liferay模板从Velocity转FreeMarker:HTML元素内嵌条件的问题解决
你这种在HTML元素内嵌入FreeMarker条件的写法完全可行,FreeMarker运行时能正常解析并生成符合预期的HTML代码。VS Code报错是因为编辑器的HTML语法检查把<#if>这类FreeMarker标签误判成了未闭合的HTML标签,解决方法有这几个:
- 给VS Code安装FreeMarker语法支持插件(比如「FreeMarker Language Support」),让编辑器能识别FreeMarker标签,不再触发错误提示。
- 关闭HTML的严格结构校验:在VS Code设置里搜索
html.validate.structure,把这个选项禁用,就能避免编辑器对非HTML标签的误判。 - 改成紧凑的单行写法,和原来Velocity的风格一致,编辑器的语法检查会更友好:
<a href="url" <#if condition>style="thisStyleOnlyIfcondition"</#if>> example </a> - 如果条件逻辑复杂,还可以用FreeMarker的三元插值写法,把属性内容作为动态值插入:
<a href="url" ${condition ? 'style="thisStyleOnlyIfcondition"' : ''}> example </a>
内容的提问来源于stack exchange,提问作者sephiroth
相关产品推荐
相关产品推荐

