我一直在尝试使用 Jira 的自定义发行说明功能,这需要编写自定义 .vm 文件。这是我第一次与 Velocity 合作,非常感谢您解决这个小问题:
我有一个简单的宏,它检查是否$issue
有一个名为的自定义字段For Release Notes
并获取其值。基于这个值,我希望 Velocity 要么输出问题摘要,要么跳过它。
问题是,即使宏返回true
or false
,我也无法让if()
语句正确处理该值。
宏:
#macro(getForReleaseNotes $issue $customFieldManager)
#set ($customFields = $customFieldManager.getCustomFieldObjects($issue.project.getLong("id"), $issue.issueType.getString("id")))
#set( $retVal = "false" )
#foreach($customField in $customFields)
#if($customField.name.equals("For Release Notes"))
#if($customField.getValue($issue)) #set( $retVal = "true" )
#end
#end
#end
$retVal
#end
HTML:
#foreach ($issueType in $issueTypes)
#if($issueType.issues.size() > 0)
<h2>$textUtils.htmlEncode($issueType.name)</h2>
<ul>
#foreach ($issue in $issueType.issues)
#set( $tester = "#getForReleaseNotes($issue $customFieldManager)" )
#if($tester == "true")
<li>[<a href='$requestContext.canonicalBaseUrl/browse/$issue.key'>$issue.key</a>] - $textUtils.htmlEncode($issue.summary)</li>
#else
<li> Value for macro: #getForReleaseNotes($issue $customFieldManager), $tester </li>
#end
#end
</ul>
#end
#end
我在if()
, from if( $tester.equals("getForReleaseNotes(..))" )
, to中尝试了许多组合if( "getForReleaseNotes(..) )
。
现在,当问题没有此属性/属性设置$retVal = false
为. 否则,宏同样会返回。问题只是让声明正确评估,因为到目前为止,它说我传递给它的所有内容都是,并且问题永远不会被打印出来。$retVal = "false"
false
true
if(..)
false
对此问题的任何帮助将不胜感激。谢谢阅读。