Some handy code for backing beans ( ADF & JSF )
2011-05-16 09:49
851 查看
记录一些使用在backing beans中的代码,可以检索ADF页面定义的数据或actions,或建立具有新UIComponents的ADF定义以及一些JSF方法……
// 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); } // 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); // 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<UIComponent> 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<Long> receivers = new ArrayList<Long>(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() ; }
相关文章推荐
- Some handy code for backing beans ( ADF & JSF )
- X-code Pods was rejected as an implicit dependency for 'libPods.a' because its architectures 'armv7'
- 关于Android Studio导入.9图片报 ':app:mergeDebugResources'. > Some file crunching failed, see logs for detai
- gisserver for javaADF:引用的对象 "#{}" 的范围比引用对象小
- Some Books for Hacks,Shellcodes & Botnets
- IPAD真机调试CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 8.0'
- Execution failed for task ':app:mergeDebugResources'. > Some file crunching failed, see logs for det
- MyEclipse "Some code changes cannot be hot swapped into a running virtual machine"
- Warning (Code 1366): Incorrect string value: '\' for column 'msg' at row 1的解决办法
- iOS开发:code signing is required for product type 'Application' in SDK 'iOS 9.2'
- Duplicate entry '1000094731-2' for key 'PRIMARY', Error_code: 1062;
- [BEROR]CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 8.1'
- Xcode code sense and cmd+click to symbol doesn't work for 1 of my projects
- CodeProject-Some Cool Tips For .Net 之一
- At least one valid code-source or import-shared-library element is required for shared-library "global.libraries" in /embedded-
- android Error:Execution failed for task ':app:mergeDebugResources'. > Some file crunching failed, se
- CodeSign error: code signing is required for product type 'Application' in SDK 'i
- Job for nginx.service failed because the control process exited with error code. See "systemctl stat
- Some Problems for Deep Learning with Theano && Lasagne framework
- CodeSign error: code signing is required for product type 'Unit Test Bundle' in SDK 'iOS 8.1'