我正在开发一个插件来显示与项目相关的其他信息。
所以我正在开发一个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时,这个数字没有出现。
我做错了什么?
答案 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片段。我怀疑碎片是正在发展的东西。