我一直在试验Jira的自定义发行说明功能,该功能需要编写自定义的.vm文件。这是我第一次与Velocity合作,非常感谢这个小问题:Jira自定义发行说明:Velocity if(..)语句和来自宏的返回值
我有一个简单的宏,检查是$issue
有一个名为For Release Notes
的自定义字段并获取它的值。基于这个值,我希望Velocity输出问题摘要,或者跳过它。
问题是,即使宏返回true
或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()
内的数量的组合,从if($tester.equals("getForReleaseNotes(..))")
,简单地if("getForReleaseNotes(..))
。
现在,该宏实际工作并返回$retVal = false
(或它是$retVal = "false"
,这是否有所作为?),当问题没有此属性/属性设置为false
。否则,宏将同样返回true
。这个问题只是让if(..)
声明正确评估,因为截至目前它说我传入它的所有内容是false
,并且问题从未打印过。
任何有关这个问题的帮助将不胜感激。谢谢阅读。
是的,你说得对,感谢分享链接。对于接受类似项目的其他人,我还建议查看Jira问题API:https://docs.atlassian.com/jira/latest/com/atlassian/jira/issue/Issue.html – Mac 2013-07-26 11:54:03