我有一個過濾器映射只是面孔的Servlet之前和在HttpSession中填充某些屬性是與請求獲取應用模塊
if (_clientUser != null && !_clientUser.isEmpty()) {
session.setAttribute(CLIENT_USER_URI_PARAM_NAME, _clientUser);
filterChain.doFilter(servletRequest, servletResponse);
return;
}
內URI進行之前,有一些信息的該任務的流應該通過使它默認活動
我繼續請求有該有界任務流中的一個方法調用該視圖之前調用(允許調用視圖的MainPage)後加以解決faces/adf.task-flow?adf.tfId=task-flow-definition-id&adf.tfDoc=/WEB-INF/task-flow-definition-id.xml
,
<default-activity>doStuff</default-activity>
方法本身是內PageFlowScoped託管Bean,它被添加到任務流程定義id.xml
這裏是doStuff方法,它是「的MainPage」之前調用 - 查看
public class Controller{
public void doStuff {
FacesContext ctx = FacesContext.getCurrentInstance();
Map sessionMap = ctx.getExternalContext().getSessionMap();
String clientUser = (String) sessionMap.get(CLIENT_USER_URI_PARAM_NAME);
AppModImpl am = getApplicationModule();
DBTransaction transaction = am.getDBTransaction();
//do more stuff
}
}
public AppModImpl getApplicationModule() {
FacesContext fc = FacesContext.getCurrentInstance();
Application app = fc.getApplication();
ExpressionFactory elFactory = app.getExpressionFactory();
ELContext elContext = fc.getELContext();
ValueExpression valueExp =
elFactory.createValueExpression(elContext, "#{data.AppModDataControl.dataProvider}", Object.class);
AppModImpl am = (AppModImpl) valueExp.getValue(elContext);
return am;
}
一切工作正常,直到這裏。但是如果我嘗試獲取應用程序模塊。沒有。 此應用程序通常沒有任何DataControl,因爲它只是一個根應用程序,其中包含ADFLibrarys添加的不同組件,但我向DataBindings.cpx添加了DataControl,並向MainPagePageDef添加了一個迭代器(僅包含DataControl在綁定中),但仍然沒有結果。
你對我有什麼建議可以訪問應用程序模塊嗎? FacesServlet在調用Managed Bean時應該已經創建了必要的FacesContext,還是僅在實際的Page(jspx/jsf)加載時才創建新的FacesContext?