gpt4 book ai didi

java - 如何将网络操作添加到项目面板?

转载 作者:行者123 更新时间:2023-11-30 07:14:10 26 4
gpt4 key购买 nike

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

我在执行这两个步骤时都遇到了问题:

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

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

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

最佳答案

第一个问题:

看看:Project Tab Panel Module

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

那么你需要做什么:

  1. 定义一个实现 TabPanel 的类接口(interface)并在 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. renderedText 作为返回值给 getHtml(...) 的调用者并将显示在页面上。

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

第二个问题:

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

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

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

关于java - 如何将网络操作添加到项目面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18594894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com