如何将webwork操作添加到项目面板?

时间:2013-09-03 14:31:33

标签: java plugins jira atlassian-plugin-sdk

我已经使用webwork操作和项目选项卡模块创建了自己的插件(单独)。但现在我需要将两者结合起来:将有一些组合框和一个使插件计算统计数据的按钮。我需要在同一个项目标签中显示它。

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

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

    < / LI>
  2. 用户按“计算”后,如何在同一页面上输出新信息按钮(所选用户的计算统计数据)。

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

1 个答案:

答案 0 :(得分:4)

您的第一个问题:

查看:Project Tab Panel Module

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

那么你需要做什么:

  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<Object, Object>。通常你会在那里放一个String / Object Entry。 Key-String将在模板中声明为变量,Value-Object是变量的值:Map<String, Object>

  6. renderedText 作为return-Value提供给getHtml(...)的调用者,它将显示在页面上。

  7. 该主题的一些Q&amp; A和教程页面:

    关于你的第二个问题:

    只需在速度模板中声明<form>...</form>标记即可。其中的action-attribute应指向您的webwork操作URL。在您已覆盖的getHtml(...)方法中,您必须通过HttpServletRequest访问ServletActionContext上下文:

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

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