2

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

所以我正在开发一个项目选项卡面板模块,但我的页面没有显示我在速度上下文中放置的参数。

这是插件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 时,数字不会显示出来。

我究竟做错了什么?

4

1 回答 1

1

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

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

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

一些项目选项卡扩展了 GenericProjectTabPanel,但一些如 SummaryProjectTabPanel.java 似乎使用 UI 片段。我怀疑 Fragments 是事情的发展方向。

于 2011-12-23T18:37:54.390 回答