Oracle ADF- How to Programmatically access an attribute value-Techartifact

How to access binding to read and write values from and to business service.Sometimes you require to read the value of custName binding and convert it to lowercase.

public void buttonPressBinding (ActionEvent actionEvent)  {

//add event code here.................

AttributeBinding attr = (AttributeBinding)getBindings().getControlBinding("custName");

String selectCust =(String)attr.getInputvalue();

attr.setInputValue(selectedCust.toLowerCase());

}

getControlBinding() – this method name get the binding by the name passed into as parameter.

AttributeBinding – is used to reference an attriubute binding to custName.

Oracle ADF- Creating ADF Business Component View Objects on More that one Entity Object — Techartifact

One of the common requirements when building an application on relational database tables is the ability to incorporate attribute from different sources into a data view which is more representative of the application requirement, rather than the database schema. ADF Business Components provides a powerful feature which can be used, for example, when viewing Emp data, you would want to displayed Department Name from the Dept table rather than just DeptId, which is less intuitive to the end users. This ADF Insider Essentials explains how you can do this.

Reference- ADF insider essential

ADF & JSF: Some handy code for backing beans

Following are the Some code which is very usefull when working in oracle ADF and JSF.Please go through


// print the roles of the current user
for ( String role : ADFContext.getCurrent().getSecurityContext().getUserRoles() ) {
System.out.println("role "+role);
}




// get the ADF security context and test if the user has the role users 
SecurityContext sec = ADFContext.getCurrent().getSecurityContext();
if ( sec.isUserInRole("users") ) {
}


// is the user valid
public boolean isAuthenticated() {
return ADFContext.getCurrent().getSecurityContext().isAuthenticated();
}



// return the user 
public String getCurrentUser() {
return ADFContext.getCurrent().getSecurityContext().getUserName();
}



// get the binding container 
BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();



// get an ADF attributevalue from the ADF page definitions 
AttributeBinding attr = (AttributeBinding)bindings.getControlBinding("test");
attr.setInputValue("test");



// get an Action or MethodAction 
OperationBinding method = bindings.getOperationBinding("methodAction");
method.execute();
List errors = method.getErrors();



method = bindings.getOperationBinding("methodAction");
Map paramsMap = method.getParamsMap();
paramsMap.put("param","value") ;
method.execute();



// Get the data from an ADF tree or table
DCBindingContainer dcBindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();

FacesCtrlHierBinding treeData = (FacesCtrlHierBinding)bc.getControlBinding("tree");
Row[] rows = treeData.getAllRowsInRange();



// Get a attribute value of the current row of iterator 
DCIteratorBinding iterBind= (DCIteratorBinding)dcBindings.get("testIterator");
String attribute = (String)iterBind.getCurrentRow().getAttribute("field1");



// Get the error 
String error = iterBind.getError().getMessage();



// refresh the iterator 
bindings.refreshControl();
iterBind.executeQuery();
iterBind.refresh(DCIteratorBinding.RANGESIZE_UNLIMITED);



// Get all the rows of a iterator 
Row[] rows = iterBind.getAllRowsInRange();
TestData dataRow = null;
for (Row row : rows) {
dataRow = (TestData)((DCDataRow)row).getDataProvider();
}



// Get the current row of a iterator , a different way 
FacesContext ctx = FacesContext.getCurrentInstance();
ExpressionFactory ef = ctx.getApplication().getExpressionFactory();
ValueExpression ve = ef.createValueExpression(ctx.getELContext(), "#{bindings.testIter.currentRow.dataProvider}", TestHead.class);
TestHead test = (TestHead)ve.getValue(ctx.getELContext());



// Get a session bean 
FacesContext ctx = FacesContext.getCurrentInstance();
ExpressionFactory ef = ctx.getApplication().getExpressionFactory();
ValueExpression ve = ef.createValueExpression(ctx.getELContext(), "#{testSessionBean}", TestSession.class);
TestSession test = (TestSession)ve.getValue(ctx.getELContext());



// main jsf page 
DCBindingContainer dc = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();


// taskflow binding 
DCTaskFlowBinding tf = (DCTaskFlowBinding)dc.findExecutableBinding("dynamicRegion1");


// pagedef of a page fragment 
JUFormBinding form = (JUFormBinding) tf.findExecutableBinding("regions_employee_regionPageDef");



// handle to binding container of the region. 
DCBindingContainer dcRegion = form;




// return a methodexpression like a control flow case action or ADF pagedef action 
private MethodExpression getMethodExpression(String name) {
Class [] argtypes = new Class[1];
argtypes[0] = ActionEvent.class;
FacesContext facesCtx = FacesContext.getCurrentInstance();
Application app = facesCtx.getApplication();
ExpressionFactory elFactory = app.getExpressionFactory();
ELContext elContext = facesCtx.getELContext();
return elFactory.createMethodExpression(elContext,name,null,argtypes);
}



// get a value 
private ValueExpression getValueExpression(String name) {
FacesContext facesCtx = FacesContext.getCurrentInstance();
Application app = facesCtx.getApplication();
ExpressionFactory elFactory = app.getExpressionFactory();
ELContext elContext = facesCtx.getELContext();
return elFactory.createValueExpression(elContext, name, Object.class);
}




// an example how to use this 
RichInputText input = new RichInputText();
input.setValueExpression("value",getValueExpression("#{bindings."+item+".inputValue}"));
input.setValueExpression("label",getValueExpression("#{bindings."+item+".hints.label}"));
input.setId(item);
panelForm.getChildren().add(input);





// catch an exception and show it in the jsf page
catch(Exception e) {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), "");
FacesContext.getCurrentInstance().addMessage(null, msg);
}

FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_WARN, msgHead , msgDetail);
facesContext.addMessage(uiComponent.getClientId(facesContext), msg);




// reset all the child uicomponents 
private void resetValueInputItems(AdfFacesContext adfFacesContext,
UIComponent component){
List items = component.getChildren();
for ( UIComponent item : items ) {

resetValueInputItems(adfFacesContext,item);

if ( item instanceof RichInputText ) {
RichInputText input = (RichInputText)item;
if ( !input.isDisabled() ) {
input.resetValue() ;
adfFacesContext.addPartialTarget(input);
};
} else if ( item instanceof RichInputDate ) {
RichInputDate input = (RichInputDate)item;
if ( !input.isDisabled() ) {
input.resetValue() ;
adfFacesContext.addPartialTarget(input);
};
}
}
}




// redirect to a other url 
ExternalContext ectx = FacesContext.getCurrentInstance().getExternalContext();
HttpServletResponse response = (HttpServletResponse)ectx.getResponse();
String url = ectx.getRequestContextPath()+"/adfAuthentication?logout=true&end_url=/faces/start.jspx";

try {
response.sendRedirect(url);
} catch (Exception ex) {
ex.printStackTrace();
}




// PPR refresh a jsf component 
AdfFacesContext.getCurrentInstance().addPartialTarget(UIComponent);




// find a jsf component 
private UIComponent getUIComponent(String name) {
FacesContext facesCtx = FacesContext.getCurrentInstance();
return facesCtx.getViewRoot().findComponent(name) ;
}




// get the adf bc application module 
private OEServiceImpl getAm(){
FacesContext fc = FacesContext.getCurrentInstance();
Application app = fc.getApplication();
ExpressionFactory elFactory = app.getExpressionFactory();
ELContext elContext = fc.getELContext();
ValueExpression valueExp =
elFactory.createValueExpression(elContext, "#{data.OEServiceDataControl.dataProvider}",
Object.class);
return (OEServiceImpl)valueExp.getValue(elContext);
}




// change the locale 
Locale newLocale = new Locale(this.language);
FacesContext context = FacesContext.getCurrentInstance();
context.getViewRoot().setLocale(newLocale);




// get the stacktrace of a not handled exception 
private ControllerContext cc = ControllerContext.getInstance();

public String getStacktrace() {
if ( cc.getCurrentViewPort().getExceptionData()!=null ) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
cc.getCurrentViewPort().getExceptionData().printStackTrace(pw);
return sw.toString();
}
return null;
}




// get the selected rows from a table component 
RowKeySet selection = resultTable.getSelectedRowKeys();
Object[] keys = selection.toArray();
List receivers = new ArrayList
(keys.length);
for ( Object key : keys ) {
User user = modelFriends.get((Integer)key);
}




// get selected Rows of a table 2 
for (Object facesRowKey : table.getSelectedRowKeys()) {
table.setRowKey(facesRowKey);
Object o = table.getRowData();
JUCtrlHierNodeBinding rowData = (JUCtrlHierNodeBinding)o;
Row row = rowData.getRow();
Test testRow = (Test)((DCDataRow)row).getDataProvider() ;
}


Read more-http://tamanmohamed.blogspot.com/2011/08/adf-jsf-some-handy-code-for-backing.html