NetSuite:高级PDF/HTML模板——变量声明方法咨询
在NetSuite高级PDF/HTML模板中声明并使用变量的方法
嘿,我来帮你搞定这个问题!NetSuite的高级PDF/HTML模板基于FreeMarker模板语言,所以我们可以用FreeMarker的语法来声明变量、处理空值逻辑。下面一步步给你讲清楚:
1. 基础变量声明与空值处理
首先,你可以用<#assign>标签来声明变量,同时用FreeMarker的空值处理语法确保字段为空时不会报错或显示乱码。
比如针对你提到的三个字段,我们可以逐个声明变量:
<!-- 声明变量,为空时设为空字符串 --> <#assign shipAddressee = record.createdfrom.entity.shipaddressee!'' /> <#assign shipCountry = record.createdfrom.entity.shipcountry!'' /> <#assign shipCity = record.shipcity!'' />
这里的!''是FreeMarker的默认值语法:如果前面的字段为空(或不存在),就用空字符串替代,避免模板渲染出错。
2. 非空判断后展示变量
接下来,你可以判断变量是否非空,再选择性展示,这样就只会显示有值的字段:
<!-- 逐个展示非空字段,自动处理空格 --> <#if shipAddressee?has_content>${shipAddressee}</#if> <#if shipCountry?has_content><#if shipAddressee?has_content> </#if>${shipCountry}</#if> <#if shipCity?has_content><#if shipAddressee?has_content || shipCountry?has_content> </#if>${shipCity}</#if>
这里的?has_content是FreeMarker的内置方法,用来判断变量是否有实际内容(比直接判断!= ''更严谨,能处理null和空字符串的情况)。
3. 进阶:拼接成单个地址变量
如果你想把所有非空字段拼接成一个完整的地址变量,再统一展示,可以这样写:
<!-- 初始化空的地址变量 --> <#assign shippingAddress = '' /> <!-- 处理createdfrom里的字段(先判断createdfrom是否存在,避免报错) --> <#if record.createdfrom?has_content && record.createdfrom.entity?has_content> <#if record.createdfrom.entity.shipaddressee?has_content> <#assign shippingAddress += record.createdfrom.entity.shipaddressee /> </#if> <#if record.createdfrom.entity.shipcountry?has_content> <!-- 如果已有内容,先加空格再拼接 --> <#assign shippingAddress += (shippingAddress != '' ? ' ' : '') + record.createdfrom.entity.shipcountry /> </#if> </#if> <!-- 处理shipcity字段 --> <#if record.shipcity?has_content> <#assign shippingAddress += (shippingAddress != '' ? ' ' : '') + record.shipcity /> </#if> <!-- 最终展示拼接好的地址 --> ${shippingAddress}
这个写法的好处是:
- 先判断
record.createdfrom是否存在(避免如果单据没有来源单据时模板报错) - 自动处理字段间的空格,不会出现多个连续空格的情况
- 只保留有值的字段,空字段会被自动忽略
注意事项
- 确保字段路径正确:你用的
record.createdfrom.entity.shipaddressee要确认在NetSuite的记录结构中是有效的(比如有些单据的createdfrom可能没有entity属性,需要根据实际单据类型调整) - 所有FreeMarker语法要放在
<#...>或${...}标签里,不要直接写在HTML文本中 - 在NetSuite模板编辑器中测试时,可以用预览功能查看实际渲染效果,及时调整逻辑
内容的提问来源于stack exchange,提问作者Saizou
相关产品推荐
相关产品推荐

