2011-07-06 6 views
2

다음 (PrimeFaces) 버튼을 누르면JSF : 탐색 문제 (Ajax/Non-Ajax)

<p:commandButton value="Search" 
       actionListener="#{personController.searchPersons}" 
       update="resultTable"/> 

개체 목록을로드하고 현재 페이지의 표에 표시합니다. 이것은 Ajax 호출을 통해 수행됩니다.

이제 다음과 같이하고 싶습니다 : 하나의 개체 만 발견되면 결과 테이블을 업데이트하지 않고 "세부 정보 페이지"에 직접 연결하십시오. (예 : detail.xhtml)

어떻게이 작업을 수행 할 수 있습니까?

searchPersons() 메서드의 반환 값을 통해 탐색을 제어 할 수 있다는 것을 알고 있습니다. 그러나 그것이해야하는대로 작동하지 않습니다. 나는 그것이 내 버튼의 update="resultTable"과 관련이 있다고 생각한다. 하지만 난 현재 어떻게 해결 해야할지 모르겠다 ...

답변

1

당신은 oncomplete 속성에 어떤 JS에서 가져올 수 ...이 문제를 해결하는 방법을 모르겠어요. 빈 동작과 부분 업데이트가 완료되면 실행됩니다. 당신은 window.location 새로운 URL을 할당하여 JS에서 창 위치를 변경할 수 있습니다.

다음은 id가 persons 인 persons 테이블을 가지고 있고 세부 링크가 테이블 행 어딘가에 <a class="detail" href="detail.xhtml?id=123">과 비슷한 것으로 가정 할 때 임의의 시작 예입니다.

oncomplete="var $persons = jQuery('#persons tbody tr'); if ($persons.length == 1) window.location = $persons.find('a.detail').attr('href');" 
+1

우수함, 감사합니다! 나는 그것을 조금씩 다르게 만들었지 만 당신은 나를 올바른 길로 인도했습니다! 'resultTable.getPaginator(). getTotalRecords() == 1) $ ('# resultTable button : first '). trigger ('click ');'resultTable은 PrimeFaces DataTable이고 버튼은 선택된 요소와 링크를로 설정합니다. 세부 정보 페이지 – Sebi

+0

반갑습니다. 예, 그것은 단지 킥오프 예제였습니다. 알다시피, 나는 당신의 정확한 뷰 구조에 대해 아무것도 모른다 :) – BalusC