簡體   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