如何在jira插件webwork模块中动态显示table内容?

How to display table content dynamically in jira plugin webwork module?

我正在创建一个 jira 插件,我目前有一个 webwork 模块。我有以下 class 来表示网络:

public class ReportWebworkAction extends JiraWebActionSupport {

    private ArrayList<String> dataList = new ArrayList<String>();
    private String temp;

    //setters and getters for all varaibles

    @Override
    public String doDefault() throws Exception {
         //1) make http request
         //2) parse json data
         //3) display list of data in html table using velocity.vm

          return super.doDefault();
    }
}

现在我能够成功发出 http 请求并将数据解析为 java 个对象的列表。我如何在速度页面中查看该列表并为每个项目创建一个元素来显示数据。

这就是我想要做的:

#foreach($item in $dataList) {
    <tr>
          <td>$item.key</td>
          <td>$item.name</td>
          <td>$item.value</td>
    </tr>
}
#end

我的速度页面似乎无法识别 $dataList 项,它是我的 ReportWebworkAction class 中的一个 ArrayList 变量。但是它可以访问字符串变量 temp。

我读到我需要使用 Content Provider 和 getContextMap() 方法,但我对如何在单独的 class 中使用它感到困惑。有人可以告诉我正确的方法吗?谢谢。

您需要 getter: WebWork class 中的 getDataList() 才能在 Velocity 模板中访问它。 WebWork class 成员通过访问器转移(getters)。

是的,getContextMap() 也是一种解决方案,但手动将对象放入上下文中非常乏味。 WebWork 使用正确命名的访问器自动执行此操作。