在Jira 4.4中将参数放入速度上下文中

时间:2011-12-23 09:23:23

标签: jira velocity jira-plugin

我正在开发一个插件来显示与项目相关的其他信息。

所以我正在开发一个Project Tab Panel模块,但是我的页面没有显示我在速度上下文中输入的参数。

以下是插件xml的一部分:

<project-tabpanel key="stats-tab-panel" name="Stats Tab Panel" i18n-name-key="stats-tab-panel.name" class="it.pride.jira.plugins.StatsTabPanel">
<description key="stats-tab-panel.description">The Stats Tab Panel Plugin</description>
<label key="stats-tab-panel.label"></label>
<order>10</order>
<resource type="velocity" name="view" location="templates/tabpanels/stats-tab-panel.vm"/>

这是我班级的有用部分:

public class StatsTabPanel   extends GenericProjectTabPanel {

public StatsTabPanel(JiraAuthenticationContext jiraAuthenticationContext,
        FieldVisibilityManager fieldVisibilityManager) {
    super(jiraAuthenticationContext, fieldVisibilityManager);
    // TODO Auto-generated constructor stub

}


public String testvalue="112002";

@Override
public boolean showPanel(BrowseContext context){
    return true;
}

@Override
public Map<String, Object> createVelocityParams (BrowseContext context) {
    Map<String, Object> contextMap = createVelocityParams(context);
    contextMap.put("testvalue", testvalue);
    return contextMap;
}

}

所以,就像在这种情况下,当我在我的模板中写'$ testvalue时,这个数字没有出现。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

问题是用于返回选项卡HTML的getHtml方法有一个Map,它是Velocity上下文,但只包含BrowseContext对象中的params。解决此问题的方法是覆盖类中的createVelocityParams,例如

protected Map createVelocityParams(final BrowseContext ctx){    Map params = super.createVelocityParams(ctx);    params.put(“myparam”,“它的一些价值”);    返回参数; }

问题是方法受到保护所以我最终还是覆盖了在父类中调用createVelocityParams的getHtml。

某些项目选项卡扩展了GenericProjectTabPanel,但是一些诸如SummaryProjectTabPanel.java似乎使用了UI片段。我怀疑碎片是正在发展的东西。