0

在我们运行 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例如?

4

3 回答 3

1

在你的 vm 模板中,这样写:

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

现在您可以访问组件访问器,它可以为您提供几乎任何您想要的东西,包括评论管理器。

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

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

希望有帮助!:)

于 2014-03-24T16:40:20.450 回答
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 获得几乎任何类型的类都会很有帮助。

于 2012-05-31T14:08:04.920 回答
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 方法

于 2012-05-30T19:00:12.833 回答