我们今天在运行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
例如?
答案 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几乎可以获得任何类型的帮助。