2012-12-15 3 views
0

내 jsf 페이지에서 사용자 정의 javascript Ajax 호출이 있습니다. 필터에서 XMLHttpRequest의 쿼리 문자열을 캡처하고 처리합니다. 필터는 모델의 테이블에 레코드를 추가합니다. 이제 전체 페이지 새로 고치기없이 jsf 페이지를 업데이트 된 모델을 구성 요소 중 하나 (Primefaces 데이터 테이블)에 반영하겠습니다.사용자 정의 javascript Ajax 호출 후 JSF 컴포넌트 새로 고침

나는

사람이 어떻게하는지 말해 줄 수 ... 나는 사용자 정의 xmlHttpResponse이 필요로 어떻게 됐을까? 나는 그것이 복잡 할까 두려워하지만, 선택의 여지가 있지만 사용자 정의 자바 스크립트를 사용하는 것입니다 ...

+0

커스텀 아약스 호출 대신'

'(아약스 호출과 함께 사용)의 차이점은 무엇입니까? 어쩌면 당신의 문제는'

'(또는'

') 방식을 사용하고있을 것이다. –

+0

아약스는 primefaces/JSF를 사용하는 이유 중 75 %를 차지하고 있습니다. 커스텀 아약스 호출을 할 예정이라면 요점은 무엇입니까? – kolossus

+0

@kolossus 내가하는 일의 대부분을 위해, 표준 JSF는 훌륭하게 작동한다. 그러나 나는 언어 공부를위한 영어 텍스트가있는 큰 텍스트 영역을 가지고 있습니다. 학생이 한 단어를 클릭하면 그 단어가 '학습 목록'에 추가됩니다. 따라서 하나의 단일 jsf 구성 요소에는 많은 단어가 포함되어 있으며 각 단어는 자바 스크립트 아약스 호출과 연결되어 단어 및 일부 추가 정보를 데이터베이스 테이블 'learninglist'에 추가하기 위해 서버로 보냅니다. 학습 목록은 오른쪽에있는 데이터 테이블에 표시되며 새로 고침해야합니다. –

답변

4

PrimeFaces <p:remoteCommand>이 목적으로 설계되었습니다.

<h:form> 
    <p:remoteCommand name="updateTable" action="#{bean.updateTable}" 
     process="@this" update="table" /> 
    ... 
    <p:dataTable id="table">...</p:dataTable> 
</h:form> 

는 그것은 #{bean.updateTable} 메소드를 호출하고 (상대) 클라이언트 ID table와 구성 요소를 업데이트하는 JS 함수 updateTable()를 생성

여기서 특정 경우의 기본 킥오프 예이다. JavaScript 컨텍스트에서 updateTable() 함수를 호출하면됩니다. 필요한 경우

updateTable(); 

당신은 그것을 JS 개체로 보낼 수 있으며, 요청 매개 변수를 전달할 수 :

updateTable({ name1: "value1", name2: "value2 }); 

homebrewed 아약스 요청 및 동기화에 JSF의 상태를 유지 바이올린 할 필요가 있습니다.

+2

BalusC ... 사랑해. –

+0

그래서 @BalusC 올바르게 이해하면 사용자 정의 ajax 호출을 대체 할

태그가 포함 된 다른 양식을 페이지에 포함시킬 수 있습니다. 따라서 각 단어를 ajax 함수에 연결하는 대신 각 단어를 함수에 연결하여 1)

탭의 매개 변수 값을 업데이트하고 2)

탭을 클릭하십시오. 그게 맞습니까? –

+0

환상적입니다, 끝났습니다! 방금 모델을 업데이트하기 위해 기존 필터 (및 사용자 정의 아약스 호출)를 남겼습니다. 그런 다음 사용자 정의 ajax javascript에서 remoteCommand를 호출하여 dataTable을 업데이트하기 만하면 javascript가 생성되었습니다. 매력처럼 작동합니다. 나는 거의 내 의자에서 떨어졌다. @ BalusC에게 감사드립니다. –