2014-09-02 3 views
0

에 대한 몇 가지 정보가있다는 URI 내에서 요청경계 Taskflow의 호출 중에 응용 프로그램 모듈을 가져

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

으로 진행하기 전에 그냥 얼굴 서블릿 전에 매핑과의 HttpSession에 몇 가지 속성을 채울 필터를 가지고 내가보기 전에 호출되는 경계 작업 흐름 내에서 메소드 호출이 (보기 MainPage를 호출 할 수 있습니다)되어 요청을 진행 한 후 어떤 작업 흐름은 기본 활동

함으로써,
faces/adf.task-flow?adf.tfId=task-flow-definition-id&adf.tfDoc=/WEB-INF/task-flow-definition-id.xml 

를 해결해야 PageFlowScoped가 작업 흐름 - 정의 - id.xml 여기

-보기은 "MainPage"전에 호출되는 doStuff 방법에 추가 콩을, 관리 내에서
<default-activity>doStuff</default-activity> 

[방법] 자체입니다

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

모든 것이 여기까지 잘 작동합니다. 하지만 응용 프로그램 모듈을 얻으려고하면. 그렇지 않습니다. 이 응용 프로그램은 일반적으로 ADFLibrary에 의해 추가 된 다른 구성 요소를 보유하고있는 루트 응용 프로그램이기 때문에 DataControl이 없지만 DataControl을 DataBindings.cpx에 추가하고 MainPagePageDef에 대한 반복기를 추가했습니다 (DataControl 바인딩에서) 여전히 결과가 없습니다.

응용 프로그램 모듈에 액세스하는 방법에 대한 조언이 있으십니까? FacesServlet은 Managed Bean이 호출 될 때까지 이미 필요한 FacesContext를 생성했거나 실제 페이지 (jspx/jsf)가로드되는 시간 만 새로운 FacesContext를 생성합니까?

답변

관련 문제