Java 如何使用Atlassian原生API将JIRA wiki标记程序化转换为HTML?

Java 如何使用Atlassian原生API将JIRA wiki标记程序化转换为HTML?,java,jira,confluence,wiki-markup,Java,Jira,Confluence,Wiki Markup,我试图从JIRA那里获得一个问题的描述,将其放在Confluence存储格式模板中,以便在Confluence中创建一个页面。但我找不到一种方法将描述原始数据呈现为可识别的存储格式。以下是一个具体的例子: 关于JIRA中的一个问题,描述如下: 调用com.atlassian.jira.issue.issue.getDescription()得到的描述字符串是: {color:#14892c}Recently Updated{color} h1. *_As you and your team c

我试图从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模板表示。模板引擎无法识别直接以存储格式插入,因此无法正确呈现


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

要将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;
}

下面是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%成功:


谢谢您提供的信息!这是一个很好的开始。当我把它显示到控制台时,我得到了一个格式正确的链接。但是,当我创建一个包含完全相同内容并发送到velocity模板的对象时,它会生成一个链接,看起来像
[1]链接标题------------------------------------------------------------------[1]http://example.com
。我假设当IssuerEnderContext传递到velocity渲染器时,它会发生一些变化。有没有办法防止这种情况?