Basically this is what you need to do.
- Get the Task Flow binding of the region in the page definition, you need to have the full name
- Get the RootViewPortContext
- Find the ChildViewPortContext , use the TaskFlow full name
- Get the pageFlowScope Map of the ChildViewPortContext
Here some demo code.
package test.adf.global.beans;
import javax.faces.event.ActionEvent;
import java.util.Map;
import oracle.adf.controller.ControllerContext;
import oracle.adf.model.BindingContext;
import oracle.adf.model.binding.DCBindingContainer;
import oracle.adf.view.rich.context.AdfFacesContext;
import oracle.adf.controller.internal.binding.DCTaskFlowBinding;
import oracle.adfinternal.controller.state.ChildViewPortContextImpl;
import oracle.adfinternal.controller.state.RootViewPortContextImpl;
import test.adf.global.interfaces.BeanInt;
public class MainBean {
public MainBean() {
}
private String name = "main";
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
// dump current Task Flow pageFlowScope
public void dumpPageFlowScope(ActionEvent actionEvent) {
AdfFacesContext facesCtx= null;
facesCtx= AdfFacesContext.getCurrentInstance();
Map<String, Object> scopeVar= facesCtx.getPageFlowScope();
for ( String key : scopeVar.keySet() ) {
System.out.println("key: "+key);
System.out.println("value: "+scopeVar.get(key));
}
}
// dump the child Task Flow pageFlowScope
public void dumpChildPageFlowScope(ActionEvent actionEvent) {
// get the current BindingContainer
BindingContext bctx = BindingContext.getCurrent();
DCBindingContainer mainViewPageBinding = (DCBindingContainer)
bctx.getCurrentBindingsEntry();
// find the task flow pagedef binding, see the pageDef
DCTaskFlowBinding tf = (DCTaskFlowBinding)
mainViewPageBinding.findExecutableBinding("child1");
System.out.println(tf.getFullName());
ControllerContext conn = ControllerContext.getInstance();
RootViewPortContextImpl rootViewPort =
(RootViewPortContextImpl) conn.getCurrentRootViewPort();
ChildViewPortContextImpl childView = (ChildViewPortContextImpl)
rootViewPort.getChildViewPortByClientId(tf.getFullName());
// get pageFlowScope
Map<String, Object> scopeVar= childView.getPageFlowScopeMap();
for ( String key : scopeVar.keySet() ) {
System.out.println("key: "+key);
System.out.println("value: "+scopeVar.get(key));
}
BeanInt bean = (BeanInt)scopeVar.get("childBean");
System.out.println(bean.getName());
}
}
{ 0 comments... Views All / Send Comment! }
Post a Comment