如何在自定义发行说明模板中获取JIRA问题的注释
今天,在运行4.2.4版之前,我们将jira升级到了5.0.5版。在该版本中,我们制作了一个自定义的发行说明模板,该模板还将显示对某个问题的所有评论。为此,我们必须能够获得一个如何在自定义发行说明模板中获取JIRA问题的注释,jira,Jira,今天,在运行4.2.4版之前,我们将jira升级到了5.0.5版。在该版本中,我们制作了一个自定义的发行说明模板,该模板还将显示对某个问题的所有评论。为此,我们必须能够获得一个CommentManager对象。我们是这样做的: #foreach ($issue in $issueType.issues) #if($issueType.issues.size() > 0) #set ($comments = $action.ComponentManager.CommentManage
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
的情况下?JiraWebActionSupport具有以下不推荐的方法,该方法提供了component manager对象
@不赞成
公共组件管理器getComponentManager()
{
返回ComponentManager.getInstance();
}
及
有一些Velocity代码,但看看5.0.1源代码,Velocity似乎不再被使用了
我想在上提交一个改进,将getCommentManager方法添加到JiraWebActionSupport.java这是我在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几乎可以获得任何类型的类,这对其他人都是非常有帮助的。在您的vm模板中,写以下内容:
#set ($componentAccessorClass = $constantsManager.getClass().getClassLoader().findClass('com.atlassian.jira.component.ComponentAccessor'))
#set ($componentAccessorConstructor = $componentAccessorClass.getConstructor())
#set ($componentAccessor = $componentAccessorConstructor.newInstance())
现在,您可以访问,它可以获得您想要的任何东西,包括评论管理器
现在,您只需对组件访问器变量调用getCommentManager()
#set($commentManager = $componentAccessor.getCommentManager() )
希望有帮助!:) 您好,谢谢您的回答,您指向的链接是如何为发行说明中的评论添加customn字段,而不是如何获取发行说明中的问题的评论。GetComponentManager方法是我以前使用的方法,但它似乎不再有效。然而,我确实找到了另一种使用Jira5.0.5的方法,这有点偏差,但我设法得到了一个组件管理器对象,其余的都很简单。我也会发布我的答案