2015-12-08 24 views
0

我的xPage上有一個使用頁面數據源(jdbcQuery)的數據表。通過單擊某個表單按鈕,我想從數據表或數據源本身將整個列讀入scopevariable。怎麼做?謝謝。如何獲得xPage上的數據表列值?

好的,比方說,我的網頁上有一個組合框。它應該具有唯一值的數據表列之一。 Datatable更新 - 然後與列值組合框更新

+0

數據表和按鈕是否必須相互依賴?有兩個查詢需要連接的原因嗎? –

+0

他們不應該真的相互依賴。但它真的很重要嗎?我只想點擊一個按鈕或任何其他組件,例如帶一個顯示整個列的內容的消息框,例如以逗號分隔。確定這個數據表過濾數據輸出..所以我想使用當前列值顯示在其他地方。我試圖玩getComponent(「dataTable1」)。getChildren()。get(..) – VladP

+0

我遇到了一些麻煩,你想完成什麼,但是一種方法會考慮建立一個獨立的查詢來顯示你的列值。基於數據過濾器和其他依賴關係構建您的SQL查詢。 –

回答

0

從我從你的話題描述和您與Steve的討論中得到的結果我假設您正在使用jdbc構建數據源並將其傳遞到數據表控件中。另外,你希望能夠使用像comboBox這樣的其他控件來訪問最終顯示在其中一個數據表列中的內容 - 我是否明白這一點?

在這種情況下,我會使用某種臨時數據存儲(例如,在一個javabean對象或作用域變量中)來存儲您收集的和可能過濾的SQL數據。然後,您的數據表和其他任何控件都將從該數據存儲中獲取其數據;這應該比我認爲你試圖完成的方式更有效。

編輯:

假設你的SQL查詢的代碼是用Java編寫的,你可以導入javax.faces.context.FacesContextjavax.faces.context.ExternalContext。然後實例這樣

private FacesContext facesContext = FacesContext.getCurrentInstance(); 
private ExternalContext externalContext = facesContext.getExternalContext(); 

你的對象從這裏您可以訪問所有4個作用域爲java.util.Map對象(你可以看到viewScope是有點不同於其他):

private Map applicationScope = externalContext.getApplicationMap(); 
private Map sessionScope = externalContext.getSessionMap(); 
private Map requestScope = externalContext.getRequestMap(); 
private Map viewScope = facesContext.getViewRoot().getViewMap(); 

希望這有助於。

+0

謝謝洛塔。是的,你理解我的問題的權利。所以我的數據表連接到數據源。但是,我如何將數據源輸出放入一個scopevariable?在哪個點和哪裏? – VladP

+0

對於遲到的回答感到抱歉;最近無法找到時間檢查stackoverflow ... - 我給我的答案添加了一些示例代碼 –