2

我已经使用网络操作和项目选项卡模块制作了自己的插件(单独的)。但现在我需要将两者结合起来:会有一些组合框和一个按钮,使插件计算统计信息。我需要在同一个项目选项卡中显示它。

我在这两个步骤中都遇到了问题:

  1. 将显示如何在项目选项卡之前执行任何 Java 代码,并生成此页面的内容,其中包含 Java 代码将从 userManager、groupManager 等检索到的信息(用用户名填充组合框)。

  2. 用户按下“计算”后如何在同一页面上输出新信息!按钮(为选定用户计算的统计信息)。

我想我需要在我的项目面板选项卡上重新定义一些方法(类似于“renderPage”)。

4

1 回答 1

5

对于你的第一个问题:

看看:项目选项卡面板模块

您必须在那里设置的类负责呈现项目选项卡面板。在正常情况下,您会在那里渲染一些速度模板。查看 VersionsProjectTabPanel 实现的接口之一(com.atlassian.jira.plugin.browsepanel.TabPanel)。在那里你会发现一个名为getHtml(...)的方法。Jira 将在 Panel 显示在网页中之前调用此方法。

所以你必须做的:

  1. 定义一个实现TabPanel接口的类,并在 atlassian-plugin.xml 的项目选项卡面板模块描述符中设置此类
  2. 用您自己的模板渲染过程覆盖方法getHtml(...)
  3. 在您覆盖的方法中,您必须获得对VelocityManager的引用:

    VelocityManager velocityManager = ComponentManager.getInstance().getVelocityManager();

  4. 编写速度模板并使用getBody(...)方法进行渲染:

    String renderedText = velocityManager.getBody("<PATH_TO_TEMPLATE>", "templatename.vm", context);

  5. 如果您想将内容传递给该模板,请通过getBody(...)方法的上下文变量执行此操作。Map 的类型为Map<Object, Object>。通常你会在那里放一个字符串/对象条目。Key-String 将在模板中声明为变量,而 Value-Object 是变量的值:Map<String, Object>

  6. 将该renderText作为返回值提供给getHtml(...)的调用者,它将显示在页面上。

该主题的一些问答和教程页面:

对于你的第二个问题:

<form>...</form>只需在你的速度模板中声明一个标签。那里的操作属性应该指向您的网络工作操作 u​​rl。在您覆盖的getHtml(...)方法中,您必须通过ServletActionContext访问HttpServletRequest上下文:

HttpServletRequest request = ServletActionContext.getRequest();
String someRequestParam = request.getParameter("paramName");

通过我们之前谈到的模板上下文映射将请求参数内容传递给您的速度模板,或者使用它执行一些业务逻辑。

于 2013-09-04T09:46:46.623 回答