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 メソッドに、Velocity コンテキストである Map がありますが、BrowseContext オブジェクトのパラメーターのみが含まれていることです。これを修正する方法は、クラスで createVelocityParams をオーバーライドすることです。

protected Map createVelocityParams(final BrowseContext ctx) { Map params = super.createVelocityParams(ctx); params.put("myparam", "何らかの値"); パラメータを返します。}

問題は、メソッドが保護されているため、親クラスで createVelocityParams を呼び出す getHtml もオーバーライドしてしまうことです。

一部のプロジェクト タブは GenericProjectTabPanel を拡張しますが、SummaryProjectTabPanel.java などの一部は UI フラグメントを使用しているようです。Fragments が向かっているのではないかと思います。

于 2011-12-23T18:37:54.390 に答える