javax.faces.component.UIData

UIDataのprocessDecodesの仕様でようわからんところがあった。

ステップとして、UIComponentBaseの同メソッドで、次の
ステップをふめーって書いてある。

1.If the rendered property of this UIComponent is false, skip further processing.

ふむふむ、isRendered()がfalseなら、おしまいってことね。

2.Set the current rowIndex to -1.

言うに及ばず。

3.Call the processDecodes() method of all facets of this UIData, in the order determined by a call to getFacets().keySet().iterator().

おけおけ。

4.Call the processDecodes() method of all facets of the UIColumn children of this UIData.

ほうほう。子供もよきにはからえと。
わりとJSFおきまりの、子供にもイベントや処理の派生しますねと。
なんどIteratorまわしたことか。。。

5.Iterate over the set of rows that were included when this component was rendered (i.e. those defined by the first and rows properties), performing the following processing for each row:
 ①Set the current rowIndex to the appropriate value for this row.
 ②If isRowAvailable() returns true, iterate over the children components of each UIColumn child of this UIData component,
  calling the processDecodes() method for each such child.

ん???英語が読めてないのか、意味がわからないのか、、、
②がUIComponentの子供の子供(?)をprocessDecodesするのかな?

つーか良く見たら、processDecodesだけじゃなくって、
processValidatorsもprocessUpdatesも同じように書いてあるな。
(大きな声では言えんが、MyFacesとか見てみよっと・・・
なになに・・・・ゴソゴソ
あ、やっぱり子供の子供にprocessうんちゃらするのか。。。。
しかしこのコード、、、ま、いいや。黙秘。)


6.Set the current rowIndex to -1.
7.Call the decode() method of this component.
8.If a RuntimeException is thrown during decode processing,
  call FacesContext.renderResponse() and re-throw the exception

ま、この辺はいいとして。

とりあえずこの部分は、完成〜(^o^)
まだUI第二階層だよ、とほほほ。。。。