如何在FreeMarker中过滤字符串特殊字符及空值处理验证
ClickDimensions + Microsoft Dynamics 个性化邮件FreeMarker代码优化
一、特殊字符过滤与首字母大写实现
针对FirstName字段中存在的特殊字符(如%%John%%需转换为John),同时实现首字母大写的需求,无需嵌套${}语法,直接通过FreeMarker的过滤器组合即可完成:
${Recipient.contact.firstname[0]?replace("%%", "", "r")?capitalize}
?replace("%%", "", "r"):全局替换所有%%为空字符串("r"表示全局匹配替换)?capitalize:将处理后的字符串首字母大写
二、空值适配的条件判断修正
你提供的原条件语句存在语法错误,??是FreeMarker的存在性判断运算符,不能作为字符串值进行比较。正确的空值适配写法如下:
写法一:分步赋值判断
<#assign firstname = Recipient.contact.firstname[0]!"" /> <#if firstname?trim == ""> Customer <#else> ${firstname?replace("%%", "", "r")?capitalize} </#if>
Recipient.contact.firstname[0]!"":当字段为空或不存在时,默认赋值为空字符串?trim:去除字符串前后空格,避免因空格导致的误判- 若处理后字符串为空,则显示
Customer,否则输出处理后的姓名
写法二:简洁链式写法
${(Recipient.contact.firstname[0]!""?trim)?replace("%%", "", "r")?capitalize! "Customer"}
通过链式过滤器组合,一步完成空值处理、特殊字符替换、首字母大写,最终若结果为空则显示Customer。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

