Some handy code for your managed Beans ( ADF & JSF )

Bookmark and Share
Back in 2009, I already a made a blogpost about some handy code which you can use in your ADF Web Application. You can say this blogspot is part 2 and here I will show you the code, I use most  in my own managed Beans.



I start with FacesContext class, with this class you can use to find a JSF Component, change the Locale, get the ELContext, Add a message to your view and get the ExternalContext

// FacesContext 
FacesContext facesCtx = FacesContext.getCurrentInstance(); 

// find UIComponent
UIComponent input = facesCtx.getViewRoot().findComponent("f1");

// change the locale  
facesCtx.getViewRoot().setLocale( Locale.ENGLISH);  

// el expression
Application app = facesCtx.getApplication();  
ExpressionFactory elFactory = app.getExpressionFactory();  
ELContext elContext = facesCtx.getELContext();  

ValueExpression valueExp = elFactory.createValueExpression(elContext,
"#{xxxx}",
Object.class); 
Object result = valueExp.getValue(elContext);

// add a message
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_WARN,
"header",
"detail");  
facesCtx.addMessage(input.getClientId(facesCtx), msg); 

// ExternalContext
ExternalContext ectx = facesCtx.getExternalContext();

The ExternalContext class, with this you can retrieve all the java init & context (web.xml) parameters, the Request & Session parameters and your web application url.

// ExternalContext
ExternalContext ectx = facesCtx.getExternalContext();  

// all the java init parameters
Map<String, Object> initParamsVar = ectx.getInitParameterMap();  

Map<String, String> requestParamsVar = ectx.getRequestParameterMap();
Map<String, Object> sessionParamsVar = ectx.getSessionMap();

// web application context root
String contextPath = ectx.getRequestContextPath();

AdfFacesContext class, you can use this class for Partial Page Rendering ( PPR), get the PageFlowScope and ViewScope variables

// AdfFacesContext
AdfFacesContext adfFacesCtx = AdfFacesContext.getCurrentInstance();
// PPR
adfFacesCtx.addPartialTarget(input); 

// get the PageFlowScope Params
Map<String, Object> scopePageFlowScopeVar= adfFacesCtx.getPageFlowScope();

// get the viewScope Params
Map<String, Object> scopeViewScopeVar= adfFacesCtx.getViewScope();
ADFContext class, with this you can get all the memory scopes variables even the application scope variables, ELContext and the SecurityContext.

// ADFContext
ADFContext adfCtx =  ADFContext.getCurrent();

// Get the scope variables
Map<String, Object> applicationVar2   = adfCtx.getApplicationScope();
Map<String, Object> pageParamsVar2    = adfCtx.getPageFlowScope();  
Map<String, String> requestParamsVar2 = adfCtx.getRequestScope();
Map<String, Object> sessionParamsVar2 = adfCtx.getSessionScope();

// el expression
ELContext elContext2 = adfCtx.getELContext();
ExpressionFactory elFactory2 = adfCtx.getExpressionFactory();
ValueExpression valueExp2 = elFactory2.createValueExpression(elContext2,
"#{xxxx}",
Object.class); 
Object result2 = valueExp2.getValue(elContext2);

// Security
SecurityContext secCntx = adfCtx.getSecurityContext();

SecurityContext class, retrieve the current user and its roles.

// Security
SecurityContext secCntx = adfCtx.getSecurityContext();
String user    = secCntx.getUserName();  
String[] roles = secCntx.getUserRoles();  
BindingContext, BindingContainer and DCBindingContainer class. These classes are well known when you want to retrieve the ADF pagedef objects.

BindingContext bc           = BindingContext.getCurrent();

BindingContainer bcon       = bc.getCurrentBindingsEntry();

List<AttributeBinding> attr = bcon.getAttributeBindings();
List<OperationBinding> oper = bcon.getOperationBindings();
List<ControlBinding>   ctrl = bcon.getControlBindings();

DCBindingContainer dcbcon = (DCBindingContainer) bc.getCurrentBindingsEntry();   
List<AttributeBinding> attr2 = dcbcon.getAttributeBindings();
List<OperationBinding> oper2 = dcbcon.getOperationBindings();
List<ControlBinding>   ctrl2 = dcbcon.getControlBindings();
List                   iters = dcbcon.getIterBindingList();
List                   exec  = dcbcon.getExecutableBindings();
The last class is ControllerContext, which you can use to retrieve the exceptions

ControllerContext cc = ControllerContext.getInstance();  
// get the exception
Exception exp = cc.getCurrentViewPort().getExceptionData();

{ 0 comments... Views All / Send Comment! }

Post a Comment