"One of the 'power tools' of ADF Binding is the dataProvider attribute that pretty much every binding object supports." -Duncan Mills
Duncan Mills has a comprehensive blogpost about this DataProvider thing here. When I was still on my first steps in learning ADF, I found it a challenge to programmatically access this DataProvider thing without using the JSFUtils.resolveExpression() method, that is why I thought that maybe it would be helpful for others who are still beginning their Oracle ADF experience if I will post here what I have figured out.
public Object getCurrentRowDataProvider(String iteratorName) { BindingContainer bindings = getBindings(); DCIteratorBinding dcib = (DCIteratorBinding)bindings.get(iteratorName); RowSetIterator iter = dcib.getRowSetIterator(); DCDataRow row = (DCDataRow)iter.getCurrentRow(); return row.getDataProvider(); } public BindingContainer getBindings() { return (BindingContainer)JSFUtils.resolveExpression("#{bindings}"); }Illustrative usage:
public void save(ActionEvent event){ Employee employee = (Employee)getCurrentRowDataProvider("findAllEmployeesIterator"); //some other codes like setting some default properties for the employee ... //or accessing the object attributes from employee System.out.println(employee.getDepartment().getDepartmentName()); //invoke saveEmployee methodAction OperationBinding oper = getBindings().getOperationBinding("saveEmployee"); oper.execute(); }Cheers!
Hi, thanks for your post. I tried this piece. But i'm getting error at " return (BindingContainer)JSFUtils.resolveExpression("#{bindings}");"
ReplyDeletestating "resolveExpression" not found. May i know which util version util class is this.
My jdev is 11.1.1.2.0 and getting JsfUtils.java not JSFUtils.java
Hi,
ReplyDeleteYou could get the must-have JSFUtils from the demo application of JDeveloper - the StoreFront demo (Fusion Order Demo)from this link: http://www.oracle.com/technology/products/jdev/samples/fod/index.html
Regards,
Pino
Thanks a lot Pino. Will Try that.
ReplyDeleteso cool blog! I really like it!
ReplyDelete