我正在尝试将应用程序模块放在托管bean类中,因此我可以检索当前的ViewObject并更改它的属性。
我正在使用DWR,因此我可以将blob图像作为参数从JavaScript传递给此类,因此我可以将其保存在ViewObject属性上。
我的问题是我无法检索当前的AppModuleImpl,因为
FacesContext.getCurrentInstance();
方法返回 null 。
我用来检索AppModule的方法:
on bean“FileUpload.java”(由DWR使用)
// call VO
AppModuleImpl am = (AppModuleImpl)ADFUtil.resolvElDC("AppModuleDataControl");
ViewObjectImpl vo = am.getMyVO();
在utils类“MyUtils.java”(通用函数类)
上public static Object resolvElDC(String data) {
FacesContext fc = FacesContext.getCurrentInstance();
Application app = fc.getApplication();
ExpressionFactory elFactory = app.getExpressionFactory();
ELContext elContext = fc.getELContext();
ValueExpression valueExp = elFactory.createValueExpression(elContext,
"#{data." + data + ".dataProvider}",
Object.class);
return valueExp.getValue(elContext);
}
有关如何访问当前AppModule / ViewObject的任何帮助?
答案 0 :(得分:1)
您可以使用以下命令从bean获取应用程序模块参考:
BindingContext bindingContext = BindingContext.getCurrent();
DCDataControl dc = bindingContext.findDataControl("AppModuleAMDataControl"); //Name of application module in datacontrolBinding.cpx
但要获取ViewObject,您可以使用:
DCBindingContainer bc = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
DCIteratorBinding iter = bc.findIteratorBinding("MyVOIterator");
ViewObject obj = iter.getViewObject();