2011-04-29 10 views
0

Richfaces 4 및 Mojarra 2.0.4를 사용하고 있습니다. 답변이 Richfaces 4 프레임 워크에만 해당된다면 기쁠 것입니다.JSF 페이지의 렌더링 완료 후 데이터로드

JSF 구성 요소가 서버 측에서 처리된다는 것을 알고 있습니다. 내 페이지 중 일부는 실제로 데이터 중심입니다. 따라서 해당 페이지를로드 할 때 (예 : switchType ajax가있는 richTab 내부) 콩을 사용하여 데이터를 실행하고 가져 오는 데 @PostConstruct으로 표시된 메소드를 실행하는 데 많은 시간이 걸립니다. 따라서 사용자가 탭 헤더를 클릭 할 때부터 실제 페이지 렌더링까지의 시간이 매우 길어서 사용자 경험이 매우 좋지 않습니다. 페이지의 dataTables에 대한 지연로드를 구현했지만 @PostConstruct이 아직 남아 있으므로 페이지로드 시간이 최적화되지 않습니다.

어쨌든 먼저 페이지를로드 할 수 있습니까? 그렇다면 아약스로 데이터를 가져 와서 페이지를 업데이트 할 수 있습니까? 이 로딩 시간이 절상 user.Any 도움말 :

PS 정말 짜증나 : 나는 a4j:function로 선언 oncompleteonbeforedomupdaterich:tab의 클라이언트 측 이벤트와 전화 아약스 기능을 사용하여 생각했다. 그러나이 이벤트는 전에 전에 실제로 전환 된 것 같습니다.

답변

1

사용 당신은 여전히 ​​페이지가 먼저 렌더링을 완료 onload에서 자바 스크립트 함수 다음 setTimeout('a4jfunctionName',10)를 사용하여 호출 된 메소드 전에 완전히 렌더링되지 느끼는 경우 <a4j:jsFunction>

과 함께 HTML에서 <body> 태그의 onload 이벤트입니다.

+0

답변 해 주셔서 감사합니다. 그러나 onload 이벤트를 사용하려면 어떤 탭이로드되었는지에 따라 호출 할 빈의 메소드를 확인해야합니다. 맞습니까? 그러나 당신의 대답은 저에게 아이디어를주었습니다! 나는 oncomplete on rich : tab을 setTimeout과 함께 사용할 수 있습니다! 시도하고 돌아올 것입니다. :) – Nikhil

+0

@Nikhil - 네, 그게 사실이야 아니면 다른 시간에 모든 데이터를로드해야합니다, 행운을 빌어 요 :) – niksvp

+0

글쎄, 첫 번째 탭의 완료되지 않은 메소드가 실행되지 않는다는 것을 알았습니다! 다른 탭으로 전환하여 첫 번째 탭으로 돌아 가면 첫 번째 탭만 완료됩니다. 따라서 첫 번째 탭에는이 전략을 사용할 수 없습니다. : | – Nikhil