2013-06-12 36 views
0

如何獲得在ADF完成這個簡單的任務行 -如何得到我想要的ADF

基於一些參數,我想行從視圖對象編程進行檢索。我不知道如何做到這一點。如果我沒有使用ADF,那麼我的業務方法會有如下的查詢,然後在對象上的表單中返回我想要的任何詳細信息。
* SELECT * FROM abcTable其中abccolumn =參數1; *

參數1是從一個JSF頁面的輸入。我捕獲該輸入並基於該輸入,我需要查詢另一個數據庫表(它將以ADF中的View對象的形式)來檢索其他細節並填充jsf頁面中的其他組件。我如何完成這項任務。我試圖獲取視圖對象的實例,但我似乎沒有找到任何方法,我可以根據where子句檢索我想要的有限行。 executeQuery方法不會返回任何東西(奇怪的情況)。

回答

0

綁定是參數在你的bean的變量。比方說,你想 搜索從值和輸入文本:

頁:

<af:inputText id="it8" binding="#{pageFlowScope.<YOURBEAN>.inputSearchBox}"/> 

在你的bean

private RichInputText inputSearchBox; 

public void setInputSearchBox(RichInputText inputSearchBox) { 
    this.inputSearchBox= inputSearchBox; 
} 

public RichInputText getInputSearchBox() { 
    return inputSearchBox; 
} 

請在bean的方法是會做搜索:

頁:

<af:commandButton text="search" id="cb6" actionListener="#{pageFlowScope.<YOURBEAN>.search}"/> 

在豆

public void search(ActionEvent actionEvent) { 
} 

在這種方法中,你需要從AppModuleImpl得到的ViewObject:

BindingContext bindingContext = BindingContext.getCurrent(); 
DCDataControl dc =bindingContext.findDataControl("YOURAPPMODULEDATACONTROL"); 
AppModuleImpl appM = (AppModuleImpl)dc.getDataProvider(); 
ViewObjectImpl vo = appM.getYourVO(); 

創建並應用於視圖標準viewObject與您在輸入中輸入的文本:

String searchValue = null; 
//get the value from the search field 
if (inputSearchBox.getValue() != null) { 
    searchValue = inputSearchBox.getValue().toString(); 
} 
ViewCriteria vc     = vo.createViewCriteria(); 
ViewCriteriaRow vcRow   = vc.createViewCriteriaRow(); 

vcRow.setAttribute("Field you want to search by", searchValue); 
vc.addRow(vcRow); 
vo.applyViewCriteria(vc); 
vo.executeQuery(); 

現在ViewObject被您的搜索值過濾。 如果你想通過的結果,並從該行你發現你需要做一個行迭代器,通過它迭代並保存您在某些變量所需要的值保存一些VO值:

RowSetIterator rsi = vo.getRowSetIterator(); 
String valueToGet = null; 
while (rsi.hasNext()){ 
    Row r = rsi.next(); 
    valueToGet = (String)r.getAttribute("<WHAT ATTRIBUTE YOU WANT TO GET>"); 
}