5 Ekim 2012 Cuma

Some useful ADF and JSF code for managed beans


In the following, you will find some handy code which can be used in managed beans.
Print the roles of the current user
for ( String role : ADFContext.getCurrent().getSecurityContext().getUserRoles() ) {
  System.out.println("role "+role);
}

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

Verify if the user is authenticated
public boolean isAuthenticated() {
return ADFContext.getCurrent().getSecurityContext().isAuthenticated();
}

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

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

Getting ADF attribute value from an ADF page definition
AttributeBinding attr = (AttributeBinding)bindings.getControlBinding("test");
attr.setInputValue("test");

Executing a  MethodAction
OperationBinding method = bindings.getOperationBinding("methodAction1");
method.execute();
List errors = method.getErrors();
method = bindings.getOperationBinding("methodAction2");
Map paramsMap = method.getParamsMap();
paramsMap.put("param","value")  ;
method.execute();

Getting data from an ADF tree or table
DCBindingContainer dcBindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
FacesCtrlHierBinding treeData = (FacesCtrlHierBinding) dcBindings  .getControlBinding("tree");
Row[] rows = treeData.getAllRowsInRange();

Getting an attribute value from the current row of an iterator
DCIteratorBinding iterBind= (DCIteratorBinding)dcBindings.get("testIterator");
String attribute = (String)iterBind.getCurrentRow().getAttribute("field1");

Getting the current row of a iterator (another 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());


Getting the errors of an iterator

String error = iterBind.getError().getMessage();

Refresh an iterator

bindings.refreshControl();
iterBind.executeQuery();
iterBind.refresh(DCIteratorBinding.RANGESIZE_UNLIMITED);

All the rows of an iterator

Row[] rows = iterBind.getAllRowsInRange();
TestData dataRow = null;
for (Row row : rows) {
 dataRow = (TestData)((DCDataRow)row).getDataProvider();
}

Getting 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 binding

DCBindingContainer dc = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
Taskflow binding
DCTaskFlowBinding tf = (DCTaskFlowBinding)dc.findExecutableBinding("dynamicRegion1");
Page fragment's pagedef
JUFormBinding form = (JUFormBinding) tf.findExecutableBinding("regions_employee_regionPageDef");

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);
}

Adding Action and Action Listener to a command component

RichCommandMenuItem menuPage1 = new RichCommandMenuItem();
menuPage1.setId("page1");
menuPage1.setText("Page 1");
menuPage1.setActionExpression(getMethodExpression("page1"));
RichCommandButton button = new RichCommandButton();
button.setValueExpression("disabled",getValueExpression("#{!bindings."+item+".enabled}"));
button.setId(item);
button.setText(item);
MethodExpression me = getMethodExpression("#{bindings."+item+".execute}");
button.addActionListener(new MethodExpressionActionListener(me));
footer.getChildren().add(button);

Getting a ValueExpression 

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);
}

Adding Groovy expression to a component's attribute

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 children's value of an UIComponent

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 an 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 ADFcomponent

AdfFacesContext.getCurrentInstance().addPartialTarget(UIComponent);

Find a jsf component   

private UIComponent getUIComponent(String name) {
FacesContext facesCtx = FacesContext.getCurrentInstance();
return facesCtx.getViewRoot().findComponent(name) ;
}

Getting an 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);


Getting stacktrace of an unhandled 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;
}

Getting the selected rows from a table component


RowKeySet rks = table.getSelectedRowKeys();
Iterator it = rks.iterator();
while (it.hasNext()) {
List selectedRowKeyPath = (List)it.next();        
Row row = ((JUCtrlHierNodeBinding)table.getRowData(selectedRowKeyPath)).getRow();
}

Hiç yorum yok:

Yorum Gönder