如何判断FreeMarker中#nested指令是否为空?
FreeMarker宏中判断#nested是否有内容的解决方案
要实现仅当#nested有实际输出时才包裹指定标签,你需要先捕获#nested的输出内容,再判断其是否为有效内容(非空白),具体实现如下:
修改后的宏代码
<#macro opt tagname> <#assign nestedContent><#nested></#assign> <#if nestedContent?trim?has_content> <${tagname}> ${nestedContent} </${tagname}> </#if> </#macro>
代码说明
<#assign nestedContent><#nested></#assign>:将#nested的输出内容捕获到变量nestedContent中nestedContent?trim?has_content:先去除内容两端的空白字符,再判断是否存在有效内容(既非空字符串,也不全是空白字符)- 仅当存在有效内容时,才用指定标签包裹输出
示例验证
示例1
模板:<@opt hello />
输出:(空内容,无任何标签)
示例2
模板:<@opt hello>goodbye</@opt>
输出:<hello>goodbye</hello>
内容的提问来源于stack exchange,提问作者Wang Tang
相关产品推荐
相关产品推荐

