2016-12-06 56 views
0

我正在創建一個jira插件,並且我目前有一個webwork模塊。我有以下類來表示webwork的:如何在jira插件webwork模塊中動態顯示錶格內容?

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類的ArrayList變量。但它可以訪問字符串變量temp。

我看到我需要使用Content Provider和getContextMap()方法,但我很困惑如何在單獨的類中使用它。有人能告訴我正確的方法嗎?謝謝。

回答

0

您需要在您的WebWork類中使用getter:getDataList()以便能夠在velocity模板中訪問它。 WebWork類成員通過訪問器(getter)進行傳輸。

而且getContextMap()也是一個解決方案,但將對象手動放入上下文是很繁瑣的。 WebWork使用正確命名的訪問器自動執行此操作。

+0

@Bazl是webwork模塊的唯一模塊,可以把對象的上下文。有沒有其他插件模塊可以做到這一點?對於什麼插件模塊,我必須使用getContextMap()? – simhuang

+0

嗯,我不知道任何其他模塊的工作是這樣的。據我所知當你需要將一些對象傳遞給模板時,當你實現自己的自定義字段時,需要實現getVelocityParameters(Map上下文),然後將對象放到這個參數映射中。我不知道有任何其他模塊。 – Bazyl