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

Ale*_*voy 2 java plugins jira atlassian-plugin-sdk

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

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

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

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

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

cet*_*eth 5

对于你的第一个问题:

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

您必须在那里设置的类负责呈现项目选项卡面板。在正常情况下,您会在那里渲染一些速度模板。查看 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>。通常你会在那里放一个字符串/对象条目。Key-String 将在模板中声明为变量,Value-Object 是变量的值:Map<String, Object>

  6. 给该renderedText作为返回值给调用者getHtml(...) ,它会在页面上显示。

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

你的第二个问题:

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

HttpServletRequest request = ServletActionContext.getRequest();
String someRequestParam = request.getParameter("paramName");
Run Code Online (Sandbox Code Playgroud)

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