3

我正在尝试从 JIRA 获取对问题的描述,以将其放入 Confluence 存储格式模板中,以便在 Confluence 中创建页面。但是我找不到将描述原始数据呈现为可识别的存储格式的方法。这是一个具体示例:对于 JIRA 中的问题,描述如下:

在此处输入图像描述

我通过调用得到的描述字符串com.atlassian.jira.issue.Issue.getDescription()是:

{color:#14892c}Recently Updated{color}
h1. *_As you and your team create content this area will fill up and display the latest updates._*

如果我没有弄错,我得到的字符串就是它的 wiki 模板表示。直接以存储格式插入,模板引擎无法识别,因此无法正确渲染。

我曾尝试使用<ac:rich-text-body>来包围字符串,但它不起作用。似乎我必须将 wiki 表示转换为 HTML 或 XHTML。如何在 Java 代码中实现这一点?

4

2 回答 2

5

要将 JIRA wiki 标记转换为来自 JIRA 的 HTML 渲染输出:

import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.ComponentManager;

public String renderWikiMarkup(Issue issue) {
    RendererManager rendererManager = ComponentManager.getComponent(RendererManager.class);
    JiraRendererPlugin renderer = rendererManager.getRendererForType("atlassian-wiki-renderer");
    String output = renderer.render(issue.description, issue.getIssueRenderContext());
    return output;
}
于 2016-06-08T12:02:01.123 回答
1

这是 Atlassian Jira 8.0.0 或更高版本的完整解决方案。

import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.RendererManager;
import com.atlassian.jira.issue.fields.renderer.JiraRendererPlugin;
import com.atlassian.jira.issue.fields.renderer.IssueRenderContext;

public String renderWikiMarkupOfDescription(String descriptor, Issue issue) {
    RendererManager rendererManager = ComponentAccessor.getComponentOfType(RendererManager.class);
    JiraRendererPlugin renderer = rendererManager.getRendererForType("atlassian-wiki-renderer");
    String output = renderer.render(descriptor, new IssueRenderContext(issue));
    return output;
}

public String renderWikiMarkupOfEnvironment(String environment, Issue issue) {
    RendererManager rendererManager = ComponentAccessor.getComponentOfType(RendererManager.class);
    JiraRendererPlugin renderer = rendererManager.getRendererForType("atlassian-wiki-renderer");
    String output = renderer.render(environment, new IssueRenderContext(issue));
    return output;
}

和用法:

renderWikiMarkupOfDescription(issue.getDescription(), issue);
renderWikiMarkupOfEnvironment(issue.getEnvironment(), issue);

和截图来证明这个工作 100% 成功:

描述 呈现为 HTML 1 描述 呈现为 HTML 2 渲染为 HTML 1 的环境

于 2021-05-09T23:56:36.260 回答