2011-09-05 2 views
1

JSF2 프레임 워크가있는 응용 프로그램과 함께 작업하고 있습니다. 이 프레임 워크의 개념은 백엔드 (Java)와 프론트 엔드 간의 연결을 관리하는 것입니다.JSF AJAX 메서드를 사용하여 JavaScript 모듈 범위 유지

우리가 사용하는 JSF 버전은 전달 및 데이터 가져 오기 수행을위한 여러 가지 방법을 보유하고있는 DOM에 jsf.ajax 개체를 생성한다는 것을 알고 있습니다.

그래서 개인용 범위가있는 모듈 패턴을 기반으로 프론트 엔드 아키텍처를 구축하고 있습니다. 여러 모듈에서 AJAX를 호출하여 백엔드에서 데이터를 가져와야하지만, JSF의 표준 방법을 사용하여 a4j : jsFunction (이전에 생성 된)을 호출하면 자바 스크립트 모듈의 범위가 즉시 해제됩니다. 물론 모듈로 돌아갈 수는 없습니다. 내가 부탁하고

따라서 가능한이 jsf.ajax 객체와 메서드 (요청/reponse)를 사용하여 jQuery.ajax() 방법과 유사 뭔가를 보관하는 것입니다! 난 강력하게 믿고

jQuery.ajax({ 
    url: "", // I don't have url as in PHP, I have JSF action listener #{method.function} 
    data: { param: 'value' }, // params for method.function 
    success: function(data){ 
    // yes I need to receive the data from Backend (maybe #{bean} or JSON) 
    } 
}); 

는 제작 AJAX 호출 때의 외출하지 않고, 자바 스크립트 모듈의 범위를 유지하여 나의 필요를 보관하기 위해 자바를위한 JSF와 AJAX (A4J)를 사용하는 방법이있다.

답변

2

서버에서 임의의 데이터를 게시/검색하려면 아약스 구성 요소가 필요하면 jsf.ajax가 올바른 도구라고 생각하지 않습니다. JSF 프리젠 테이션에 엄격하게 결합되어 서버 로직을 호출하고 HTML 페이지의 일부를 렌더링하는 데 사용할 수 있습니다. 응답은 부분 업데이트가있는 XML입니다. 아래에서 나는 당신의 목적에 맞게 그것을 구부리는 방법을 설명 할 것이다. 그러나이 API의 의도 된 적용은 아닐 것이다.

이는 것 한마디로

이 같이 호출 할 : DOM_node는 액션 청취자를이 요소가

jsf.ajax.request(<DOM_node>, event, {render: "<rendered_id>", execute: "@this"}) 

이 이벤트는 jsf.ajax.request 사용하는 경우 (리스너가 지원하는 유형의 JS 이벤트입니다 onclick으로 그냥 "이벤트"변수를 사용할 수 있으며 그대로 전달할 수 있습니다). <rendered_id>은 콜백으로 실행하려는 스크립트를 둘러싼 JSF 구성 요소의 클라이언트 ID 여야합니다.

결과 호출은 JSF에게 command_link와 같은 DOM_node에 해당하는 컴포넌트에 첨부 된 액션 리스너를 실행하고 컴포넌트 내에 포함 된 영역을 <rendered_id>으로 다시 렌더링하도록 요청해야합니다. html < 스크립트 > 태그가 포함되어 있으면이 스크립트가 실행됩니다. JSON 데이터와 함수 호출을 포함 할 수 있습니다.

여기에 a link to the docs입니다.

+0

흥미 롭습니다! 나는이 주제에 대해 더 많은 조사를해야한다고 생각합니다. –