2010-09-01 112 views
1

我在rich:tab內有rich:extendedDataTable渲染時刷新表

我想每次刷新表格時刷新表dataSource。每次選擇該選項卡時都會呈現它。

在堅果:

查看:

<rich:tab> 
<rich:extendedDataTable data="#{myData.data}"/> 
</rich:tab> 

豆:

public class MyData{ 
List data; 

public MyData(){ 
data = this.refreshData(); 
} 

public List getData(){ 
return data; 
} 

public List refreshData(){ 
//Database things here. 
} 
} 

我如何可以打電話refreshData每次該表呈現?我可以在執行修改data的操作的組件上使用reRender,但會破壞組件的封裝並難以維護。如果表格每次啓動標籤時都可以自行刷新data,那麼每次更新reRendered會更好。

我可以使用<rich:tab ontabenter='js_function_that_calls_the_server_and_refreshes_the_data'>但我不認爲這是最好的選擇,因爲你應該把這個函數放在tab標籤之外,而且它會拋出兩個請求而不是一個。

任何想法?讚賞。

回答

3

你可以嘗試這樣的事:

<rich:tab action="#{mydata.refreshData}" reRender="myTable"> 
    <rich:extendedDataTable id="myTable" data="#{myData.data}"/> 
</rich:tab> 
+0

03,我並沒有意識到,'tab'有'action'參數。這讓事情變得更容易......謝謝,我會試試。 – pakore 2010-09-01 14:49:00

+0

在這裏檢查:http://docs.jboss.org/richfaces/latest_3_3_X/en/tlddoc/rich/tab.html – amorfis 2010-09-01 14:51:50

+0

是的,我總是使用該文檔。我不知道爲什麼,但起初我沒有注意動作參數。它現在有效,謝謝。 – pakore 2010-09-02 07:29:23