2013-07-08 60 views
0

我有一個SQL語句返回的ResultSet。我希望使用ADF迭代器顯示結果。但是,<af:iterator>只接受CollectionModel。我使用了ResultSetDataModel類,但我不明白將哪些字段放入<af:iterator>值屬性中。 任何意見將不勝感激。如何在ADF迭代器中使用ResultSet的結果?

回答

1

您可以遍歷ResultSet來創建和填充java.util.List的任何實現。一旦你有了這個List,你必須爲該List創建一個getter,然後將<af:iterator>的value屬性與List的getter綁定。

class MyManagedBean { 
    private List myData; 
    public void initializeData(){ 
    ResultSet rs = getResultSetFromDB(); 
    while(rs.next()){ 
     myData = new ArrayList<>(); 
     myData.add(rs.getString("some_column")); 
    } 
    } 

    public List getMyData(){ 
    return myData; 
    } 
} 

,然後在JSP:

<af:iterator value="#{viewScope.myBean.myData}" var="data"> 
    <af:outputText value="#{data}" /> 
</af:iterator> 
+0

謝謝你的方法。我想知道是否有任何方法可以避免將額外的迭代從ResultSet轉換爲List?我的查詢需要<1秒才能運行,但迭代需要3秒才能運行,我希望能夠消除它。 – user1742188

+0

嘗試將ViewObject與包含SQL查詢的ViewObject一起使用。然後嘗試使用VO創建迭代器。 – MohamedSanaulla