如何在自定义发布说明模板中获取JIRA问题的注释

时间:2012-05-30 14:17:09

标签: jira

我们今天在运行4.2.4版之前将jira升级到版本5.0.5。在该版本中,我们制作了一个自定义发行说明模板,该模板还会显示对某个问题所做的所有评论。为此,我们必须能够获得CommentManager个对象。我们是这样做的:

#foreach ($issue in $issueType.issues)
#if($issueType.issues.size() > 0)
    #set ($comments = $action.ComponentManager.CommentManager.getComments($issue))
    #if ($comments) 
       #foreach ($comment in $comments)
...

在JIRA 4.2.4中工作正常但是它在jira 5.0.5中不再有效,有没有人知道如何在JIRA 5.0.5中创建自定义发行说明模板时再次获取CommentManager对象或如何以其他方式获取CommentManager对象,而不使用$action例如?

3 个答案:

答案 0 :(得分:1)

在您的虚拟机模板中,写下:

#set ($componentAccessorClass        = $constantsManager.getClass().getClassLoader().findClass('com.atlassian.jira.component.ComponentAccessor'))
#set ($componentAccessorConstructor  = $componentAccessorClass.getConstructor())
#set ($componentAccessor             = $componentAccessorConstructor.newInstance())

现在您可以访问Component Accessor,它可以为您提供任何您想要的内容,包括评论管理器。

现在,您所要做的就是在Component Accessor变量上调用getCommentManager()。

#set($commentManager = $componentAccessor.getCommentManager() ) 

希望有所帮助! :)

答案 1 :(得分:0)

JiraWebActionSupport具有以下不推荐使用的方法,该方法提供了组件管理器对象。

@Deprecated public ComponentManager getComponentManager() { return ComponentManager.getInstance(); }

https://developer.atlassian.com/display/JIRADEV/Creating+a+Custom+Release+Notes+Template+Containing+Release+Comments 有一些Velocity代码,但看看5.0.1源代码看起来不再使用Velocity?

我会在https://jira.atlassian.com/browse/JRA提交一份改进措施,为JiraWebActionSupport.java添加一个getCommentManager方法

答案 2 :(得分:0)

这是我在jira中用来获取一个componentmanager对象的方式,一旦你拥有了componentmanager对象,就可以轻松完成剩下的工作了:

#set ($componentManagerClass = $constantsManager.getClass().getClassLoader().findClass('com.atlassian.jira.ComponentManager'))
#set ($method = $componentManagerClass.getDeclaredMethod('getInstance', null))
#set ($componentManager = $method.invoke(null, null))

我现在正在使用这个解决方案,对于其他人来说,使用constantsmanager几乎可以获得任何类型的帮助。