[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 メーリングリストの案内