Jira Smart Value条件逻辑语法问题求助
Jira Smart Value条件逻辑问题排查与修复
问题描述
当前使用的Jira Smart Value代码存在两处异常:
- 仅前三个if条件生效,第四个判断
customfield_10393.value.isBlank的分支为真时,无法输出预期的_none_ - 尝试使用官方文档的
{{if(smartValue, "value if true", "value if false")}}语法时,直接在参数中写字段路径会报错,切换isEmpty/isNotEmpty也无法实现预期逻辑
原始Device Name代码:
Device Name: {{#if(not(lookupObjects.Device Name.isEmpty))}}*{{lookupObjects.Device Name}}* > {{/}}{{#if(lookupObjects.Device Name.isEmpty)}}_none_ > {{/}}{{#if(not(issue.customfield_10393.value.isEmpty))}}{{customfield_10393}}{{#if(issue.customfield_10393.value.isBlank)}}_none_{{/}}{{/}}
问题场景:当第一/第二个if为真、第三个if为假、第四个if为真时,输出结果为Device Name: someValue > **,既未在第三个if为真时用**包裹对应值,也未在第四个if为真时输出_none_。
尝试过的错误Asset Tag写法:
Asset Tag: {{#if(lookupObjects.Asset Tag.isNotEmpty, "lookupObjects.Asset Tag.value", "_none_")}}{{/}} > {{#if(issue.customfield_11607.isNotEmpty, "customfield_11607.value", "_none_")}}{{/}}
修复方案
1. Device Name代码修复
问题根源在于嵌套逻辑混乱、字段引用不规范,调整后代码:
Device Name: {{#if(not(lookupObjects.Device Name.isEmpty))}}*{{lookupObjects.Device Name}}* > {{/}} {{#if(lookupObjects.Device Name.isEmpty)}}_none_ > {{/}} {{#if(issue.customfield_10393.value)}}**{{issue.customfield_10393.value}}**{{/}} {{#if(not(issue.customfield_10393.value))}}_none_{{/}}
核心调整点:
- 拆分嵌套if为独立判断,避免逻辑层级混乱
- 直接用
issue.customfield_10393.value作为判断条件(Jira Smart Value中,非空/非空白值会被视为true) - 明确第三个if为真时用
**包裹字段值,符合预期格式 - 当字段值为空/空白时,独立分支触发输出
_none_
2. Asset Tag代码修复
官方的{{if(smartValue, trueVal, falseVal)}}是无块级语法,不需要{{/}}闭合,且字段值不能用引号包裹(否则会被当作纯文本输出),修复后代码:
Asset Tag: {{if(lookupObjects.Asset Tag.isNotEmpty, lookupObjects.Asset Tag.value, "_none_")}} > {{if(issue.customfield_11607.isNotEmpty, issue.customfield_11607.value, "_none_")}}
核心调整点:
- 去掉块级if的
#和闭合标签{{/}},遵循无块级if的语法规则 - 直接传入字段引用作为true分支值,不添加引号
- 用
isNotEmpty判断非空状态,为空时输出_none_
关键注意事项
- Jira Smart Value分两种if语法:带
#的块级if需要{{/}}闭合,不带#的简洁if直接使用,无需闭合 - 字段引用不能放在字符串引号内,否则会被当作纯文本输出,而非解析字段值
isEmpty检测是否为null/空字符串,isBlank检测是否为null/空/全空格,按需选择判断条件- 避免过度嵌套if逻辑,拆分后更易维护和排查问题
内容的提问来源于stack exchange,提问作者Gyndius
相关产品推荐
相关产品推荐

