[Seasar-user:2617] Re: [S2JSF]同じページを繰り返し表示する場合の戻るボタンの動作について
Sea Slug
seaslug
2005年 9月 27日 (火) 18:48:00 JST
竹田です。最後といいつつまた出てきてすみません。
修正点に抜けがありました。前回のメールの内容のままだと、ポストされる
データがないときforeachの要素が空になってしまいます。
そこで、org.seasar.jsf.component.ForEachに次のメソッドを追加して
レンダリングするときだけ特別扱いします。
protected void setupRows0() {
Object items = BindingUtil.getBindingValue(this,
JsfConstants.ITEMS_ATTR);
if (items == null) {
rows = new Object[rowCount];
} else if (items instanceof Collection) {
rows = new ArrayList((Collection) items).toArray();
} else if (items.getClass().isArray()) {
rows = (Object[]) items;
} else {
throw new IllegalStateException(JsfConstants.ITEMS_ATTR);
}
}
encodeChildrenだけはsetupRows0を呼ぶように変更。
public void encodeChildren(FacesContext context) throws IOException {
if (!isRendered()) {
return;
}
setupRows0();
rowCount = rows.length;
for (int i = 0; i < rows.length; ++i) {
setRowIndex(i);
refreshDescendantComponentClientId(context, this);
restoreDescendantComponentStates(context, this);
RenderUtil.encodeChildren(context, this);
saveDescendantComponentStates(context, this);
removeVarAndVarIndex();
}
}
_________________________________________________________________
ウィルス駆除も無料の 「MSN Hotmail」 http://www.hotmail.com/
Seasar-user メーリングリストの案内