2016-06-28 8 views
1

プロジェクトでは、LiferayとJSFおよびFaceletsをビュー用に使用しています。Liferay with JSF and Facelets

多くのFaceletsページと多くのバッキングBeanで、1つのポートレットのみを使用したいと考えています。

私たちは、ポートレットの外側にあるメニューバー(今はポートレット上にあるだけです)を提供すると考えています。そこで、メニュー項目のユーザー選択に基づいて適切なページを表示する必要があります。

Faceletの適切なページを表示するには、そのたびに最初のページが表示されるため、どのように表示するのがよいか分かりません。

答えて

1

- メニューバーとにリダイレクトするページのメニューバーには、JSFポートレット内にある場合、あなたは、あなたの顔-config設定にJSFナビゲーション・ルールを定義する必要が同じポートレット

であります.xmlファイルを開き、新しいビューに移動します。例えば

は、home.xhtmlがメインのポートレット・ビュー(デフォルトのポートレット・ビュー)と、そののdoAction()がメニューのクリックを扱うmanagedBeanのメソッドであることを考えます。

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

とのfaces-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ページ数が多く、バッキング・ビーンズが多い**のポートレットが1つしかないため、フレンドリーURLを使用しても問題は解決しません。実際には、jsfポートレットのビューは同じままになる新しいページにリダイレクトされます(portlet.xmlのjavax.portlet.faces.defaultViewId.viewプロパティで指定されているデフォルトビュー)。 –

+0

あなたは右のRadouane ROUFIDです。同じ戦争で他のポートレットがほとんど作成されずに機能しました。 – Sam