2012-10-03 28 views
2

我創建了一個自定義控件,並將其添加到我的標記庫。JSF - 像asp.net中的控制狀態?

此控件顯示兩個selectonemenu,其中第二個依賴於第一個,並通過ajax從數據庫中的數據更新。

目前我使用視圖範圍的bean爲第二個數據選擇。但是我對這個解決方案並不滿意,因爲可能有多個實例有一個bean。

在asp.net中有一個控制狀態來保存控制相關的數據。有類似的東西嗎?

或者我可以使用一個請求範圍的bean和一個轉換器,該轉換器在選擇時再次從數據庫中檢索數據。

回答

1

當談論擴展UIComponent的類時,該等價物被稱爲Component State

@Override 
public Object saveState(FacesContext context) { 
    Object values[] = new Object[2]; 
    values[0] = super.saveState(context); 
    values[1] = label; 
    return ((Object) (values)); 
} 

@Override 
public void restoreState(FacesContext context, Object state) { 
    Object values[] = (Object[])state; 
    super.restoreState(context, values[0]); 
    label = (String)values[1]; 
} 

以上是如何在UIComponent中的回傳中保存組件屬性的示例。簡單地擴展以下兩種方法。