2016-06-28 4 views
1

В проекте мы используем Liferay с JSF и Facelets для просмотра.Liferay с JSF и 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, которые могут помочь вам выполнить IPC между портлетами JSF.

+0

Спасибо за ваш ответ. это выглядит очень полезно. Дело в том, что у нас будет панель меню, и мы будем иметь все меню. Таким образом, ссылка, которая находится на боковой панели, не должна быть привязана к jsf. Интересно, можно ли использовать дружественный URL? – Sam

+0

Поскольку у вас есть ** только один портлет со многими страницами Facelets и многими бэкэндами **, использование дружественного URL-адреса не решит вашу проблему. Фактически он будет перенаправляться только на новую страницу, в которой представление портлета jsf будет оставаться тем же _ (представление по умолчанию, указанное в свойстве javax.portlet.faces.defaultViewId.view в вашем файле portlet.xml). –

+0

Вы правы Raduane ROUFID. Я создал несколько других портлетов в той же войне, и это сработало. – Sam