繁体   English   中英

访问托管Bean中的ApplicationModule(FacesContext NULL)

[英]Access ApplicationModule in Managed Bean (FacesContext NULL)

我正在尝试在托管bean类中获取应用程序模块,以便可以检索当前的ViewObject并更改其属性。

我正在使用DWR,因此我可以将blob图像作为参数从JavaScript传递给此类,因此可以将其保存在ViewObject属性上。

我的问题是我无法检索当前的AppModuleImpl,因为FacesContext.getCurrentInstance(); 方法返回null

我用来检索AppModule的方法:

在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的任何帮助?

您可以使用以下命令从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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM