AWS SES模板中Handlebars #lt条件语句无法正常工作
问题:AWS SES模板中Handlebars条件比较助手(如{{#lt}})无法生效,报错MissingRenderingAttribute
问题详情
- 尝试在AWS SES模板中使用类似Pinpoint文档里的条件比较语句:
{{#lt balance '0'}} <p>blah blah...</p> {{/lt}} - 传入的
balance为Java long类型,调用TestRenderTemplate操作时触发报错:An error occurred (MissingRenderingAttribute) when calling the TestRenderTemplate operation: Attribute 'lt' is not present in the rendering data.
- 核心问题:AWS SES并不支持Pinpoint提供的
lt这类Handlebars比较助手,它把#lt误判成了需要传入的渲染属性字段。
可行解决方案
- 预处理判断结果,用基础if语句替代
在Java代码中先完成balance < 0的判断,生成一个布尔型的属性(比如isBalanceNegative),然后在SES模板中使用原生支持的if助手:{{#if isBalanceNegative}} <p>blah blah...</p> {{/if}} - 避免使用Pinpoint专属助手
AWS SES的Handlebars模板引擎仅支持基础助手(if、each、with等),不兼容Pinpoint扩展的比较类助手,所有模板逻辑都要基于SES原生支持的功能实现。 - 本地预处理复杂逻辑
如果有更多复杂条件判断,建议在调用SES渲染接口前,在本地代码中完成所有逻辑处理,直接将最终需要展示的内容片段作为属性传入模板,减少模板中的逻辑依赖。
内容的提问来源于stack exchange,提问作者Torsten
相关产品推荐
相关产品推荐

