ADF中af:forEach和af:iterator標籤的區別

1. <af:forEach>

<af:forEach>標籤實際上從JSTL標籤中的<c:forEach>標籤演變過來的,是c:forEach標籤的替代品,很多情況下還不支持“varStatus

<af:forEach>不支持所有的java.util.Collections;僅僅支持 java.util.Lists或數組,當試圖使用<af:forEach>標籤來遍歷CollectionModel時會報如下錯誤:

javax.servlet.jsp.JspException: "items" 必須指向列表或數組

<af:forEach>的主要作用不是在JSF頁面中迭代的,而是被用來生成多個組件。如果你的目的是遍歷一個集合對象,那麼應該使用<af:iterator>。

一些使用<af:forEach>而不是<af:iterator>的情況:

  •    當需要用到<c:if>, <c:choose>, <c:when> and <c:otherwise> 做一些判斷來決定生成UI組件時;
  •    在循環過程中每行可能需要include不同的 jsp頁面,使用不同的page template或者不同的declarative component;
  •    當在一些Trinidad標籤中不支持使用<af:iterator>作爲子標籤,而在Rich Component中,這個問題基本上不存在。

2.<af:iterator>

<af:iterator> 指定可以遍歷的class是oracle.adf.view.rich.model.CollectionModel; 當然你還可以使用java.util.List , array, and javax.faces.model.DataModel. 事實上在運行的時候,這些都將被自動轉換爲CollectionModel


Reference

http://jdevadf.oracle.com/adf-richclient-demo/docs/tagdoc/af_forEach.html

http://jdevadf.oracle.com/adf-richclient-demo/docs/tagdoc/af_iterator.html

轉自:http://blog.csdn.net/ygj26/article/details/8013133

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章