2016-06-28 4 views
1

프로젝트에서 우리는 Liferay와 JSF 및 Facelets를 사용하여 뷰를 작성했습니다.Liferay with JSF and Facelets

많은 Facelets 페이지와 많은 백킹 빈이있는 하나의 포틀릿 만 사용하고자합니다.

우리는 포틀릿 외부의 메뉴 표시 줄 (상단의 포틀릿에만 표시됨)을 제공하기 위해 메뉴 항목에 대한 사용자 선택에 따라 적절한 페이지를 표시해야한다고 생각했습니다.

Facelet에서 적절한 페이지를 어떻게 표시 할 수 있을지 모르겠습니다. 매번 시도해 볼 때마다 첫 페이지가 표시되기 때문입니다.

답변

1

- 메뉴 표시 줄 및 페이지 메뉴 바는 JSF 포틀릿에있는 경우, 당신은 당신의 JSF 탐색 규칙을 정의하기 만 같은 포틀릿

에로 리디렉션 얼굴을-설정 .xml 파일을 열어 새보기로 이동하십시오. 예를 들어

home.xhtml 메인 포틀릿보기 (기본 포틀릿보기) 그 doAction은() 메뉴에서 클릭을 처리하는 ManagedBean은의 방법이라고 생각.

public String doAction() { 
    return "go_to_page"; 
} 

와 얼굴-config.xml에

<navigation-rule> 
    <from-view-id>home.xhtml</from-view-id> 
    <navigation-case> 
     <from-outcome>go_to_page</from-outcome> 
     <to-view-id>page.xhtml</to-view-id> 
    </navigation-case> 
</navigation-rule> 

에서

- 메뉴 표시 줄과 페이지는 동일한 포틀릿

하지로 리디렉션 그러나하는 메뉴의 경우 다른 포틀릿에 있고 리디렉션하지 않으려면 IPC (포틀릿 간 통신)를 사용하여 JSF 포틀릿의보기를 변경해야합니다. I wrote this tutorial은 JSF 포틀릿 간 IPC 수행에 도움이 될 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 그것은 매우 유용하게 보입니다. 우리가 메뉴 패널을 가지고 모든 메뉴를 갖게 될 것입니다. 사이드 패널에있는 링크는 jsf와 연결되어서는 안됩니다. 친숙한 URL을 사용할 수 있는지 궁금합니다. – Sam

+0

* ** 많은 Facelets 페이지와 많은 백킹 빈 **이있는 포틀릿이 ** 있으므로 친숙한 URL을 사용하면 문제가 해결되지 않습니다. 사실 jsf 포틀릿의 뷰는 portlet.xml의 javax.portlet.faces.defaultViewId.view 속성에 지정된 기본 뷰와 동일하게 유지되는 새 페이지로 리디렉션됩니다. –

+0

당신은 바로 Radouane ROUFID입니다. 같은 전쟁에서 다른 포틀릿을 거의 만들지 않아 효과적입니다. – Sam