0

I have a filter which maps just before the Faces Servlet and populate some Attributes in the HttpSession before it proceeds with the request

 if (_clientUser != null && !_clientUser.isEmpty()) {
 session.setAttribute(CLIENT_USER_URI_PARAM_NAME, _clientUser);
 filterChain.doFilter(servletRequest, servletResponse);
 return;
 }

Within the URI there are some informations for which Task-flow should be addressed

faces/adf.task-flow?adf.tfId=task-flow-definition-id&adf.tfDoc=/WEB-INF/task-flow-definition-id.xml

After I proceed the request there is a method-call within the bounded task flow which is called before the view (lets call the view MainPage), by making it default activity

<default-activity>doStuff</default-activity>

The Method itself is within a PageFlowScoped Managed Bean, which is added to the task-flow-definition-id.xml

Here is the doStuff Method which is called before the "MainPage"-View

        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;
    }

Everything works fine till here. But if I try to get the Application Module. There is non. This application normally doesn't have any DataControl, because is just a root Application which holds different components which have been added by ADFLibrarys, but I added an DataControl to the DataBindings.cpx and a iterator to the MainPagePageDef (just to include a DataControl in the bindings) but still no result.

Do you have any advice for me how I can access the Application Module? FacesServlet should have been already created the necessary FacesContext by the time the Managed Bean is called or does it only create a new FacesContext the Time an actual Page (jspx/jsf) loads?

pnuts
  • 58,317
  • 11
  • 87
  • 139
mSchnell
  • 15
  • 6

1 Answers1

0

I've found myself an answer: Here is the Block Post which helped me figure it out. http://andrejusb.blogspot.de/2012/02/how-to-fix-data-control-initialization.html

mSchnell
  • 15
  • 6