Интегрируйте приложение Jsf в Liferay

Я разрабатываю приложение JSF 2.0 (с Primefaces 3.2) и хочу интегрировать свое приложение JSF в Liferay. Я новичок в Liferay, и требование состоит в том, чтобы вход в приложение был через Liferay.

Это означает, что пользователь войдет в систему, что должно произойти через Liferay. Затем, как я видел в основных видеороликах liferay, после входа в систему liferay появляется «Домашняя страница Liferay».

Теперь, пожалуйста, помогите мне, внутри этой домашней страницы или после входа в систему я смогу увидеть приложение JSF, которое я разрабатываю (вы можете сказать, что мое приложение будет портлетом внутри Liferay), верно? и должен иметь возможность перемещаться в соответствии с «ролями», которые вы применили в Liferay. Как я могу это сделать?

Второй вопрос: после того, как я вошел в свое приложение JSF, мне определенно понадобится «userId», который будет уникальным, для выполнения вставки и извлечения данных из базы данных. Как я могу использовать его в своем приложении JSF? Если кто-нибудь может объяснить на простом примере, это будет очень полезно, так как это то место, где я застрял. Пожалуйста, помогите мне.

Короче говоря, можно ли вызвать отдельное приложение JSF через liferay? здесь я даю вход через liferay, потому что liferay предоставляет «роли», так что после входа в систему через liferay он должен иметь возможность войти в мое приложение JSF на основе ролей (например, администратор, опытный пользователь и т. д.) (это то, что именно Я хочу сделать)

Пожалуйста, дайте мне знать, если кому-то нужны дополнительные разъяснения по моему вопросу.


person Java    schedule 21.04.2012    source источник
comment
Требуется пояснение: у вас уже есть готовое автономное веб-приложение JSF, и вы хотите интегрировать его с Liferay? Или вы будете разрабатывать новое приложение с использованием JSF в Liferay?   -  person Prakash K    schedule 24.04.2012
comment
У меня уже есть готовое веб-приложение jsf, и я хочу интегрировать его с liferay.   -  person Java    schedule 25.04.2012
comment
Тогда, я думаю, вам придется использовать метод iframe, упомянутый в этой ссылке: liferay.com/community/wiki/-/wiki/Main/. Но вы не сможете использовать роли и систему разрешений liferay.   -  person Prakash K    schedule 25.04.2012
comment
Но если вы действительно заинтересованы в использовании ролей и разрешений lifray, вам, вероятно, придется создать новый портлет JSF в liferay и перенести свой код в соответствии со средой портлета и использовать систему разрешений Liferay в ваших JSP, и для этого у вас уже есть два хороших ответы на вопросы о том, как разрабатывать портлеты JSF в liferay. Боюсь, вы не сможете использовать код своего веб-приложения JSF так, как он находится в портлете JSF, который вы разработаете.   -  person Prakash K    schedule 25.04.2012
comment
Спасибо, Пракаш, за полезное руководство. Теперь я могу принять правильное решение. Я перенесу свой jsf-код в jsf-портлет. Вы можете использовать свои комментарии в качестве ответа, так вы получите баллы.   -  person Java    schedule 25.04.2012
comment
Я рад, что это было полезно. :-)   -  person Prakash K    schedule 25.04.2012


Ответы (3)


как уже упоминал Марк, вы можете найти примеры портлетов jsf (также с простыми лицами) здесь http://www.liferay.com/community/liferay-projects/liferay-faces/demos

внутри вашего портлета jsf вы можете получить пользовательский объект (содержащий роли) следующим образом:

public static User getCurrentUser(){
    User u = null;
    FacesContext fc = FacesContext.getCurrentInstance();
    ExternalContext externalContext = fc.getExternalContext();
    if (externalContext.getUserPrincipal() != null) {
        Long id = Long.parseLong(externalContext.getUserPrincipal().getName());
        try {
            u = UserLocalServiceUtil.getUserById(id);
        }
        catch (Exception ex) {
            LOG.error(ex.getMessage());
        }
    }
    return u;
}
person Misha    schedule 23.04.2012
comment
Да, но на самом деле я пытаюсь войти в свое приложение jsf, которое не является jsf-портлетом, это просто отдельное приложение jsf (веб). - person Java; 24.04.2012
comment
если вы используете свое автономное приложение через iframe на странице портала, я не думаю, что можно делать то, что вы хотите - person Misha; 24.04.2012
comment
Вы должны перенести свое автономное приложение в портлет. Это не так сложно, вы можете повторно использовать свои бобы и лица. Портлет — это только новая отправная точка вашего приложения. Попробуйте пример из ссылки Miha. - person Mark; 24.04.2012

Установите Liferay IDE, и она поможет вам создать простой портлет JSF-2. Вы нашли несколько примеров на странице portletfaces http://www.portletfaces.org/projects/portletfaces-bridge/liferay-ide

fyi portlet-faces теперь называется liferay-faces: http://www.portletfaces.org/projects/liferayfaces

person Mark    schedule 22.04.2012
comment
да, в liferay есть способ, с помощью которого вы можете создать портлет jsf-2. То есть вы имеете в виду, что мне нужно использовать мое существующее приложение jsf в качестве портлета? - person Java; 23.04.2012
comment
Да, значит, вы адаптировали приложение к портлету. - person Mark; 23.04.2012
comment
Хорошо, можете ли вы предоставить мне какой-нибудь простой пример портлета jsf, чтобы я мог добавить в него свой существующий проект. - person Java; 23.04.2012
comment
вы можете создать новый простой JSF-портлет с Liferay IDE, который представляет собой набор плагинов eclipse. Если вы не хотите использовать Liferay IDE, вы можете создать такой же jsf-портлет с liferay sdk, то есть пакетные ant-скрипты. Пакетная команда: создать MyJSFTest MyJSFTestPortlet jsf - person Mark; 23.04.2012
comment
да, вы правы, но если я хочу использовать свое jsf-приложение как отдельное и мне нужно звонить из liferay (скажем, из view.jsp), в таком случае, как я могу это сделать? можно ли вызвать отдельное приложение jsf через liferay? (это именно то, что я хочу сделать) (я также немного обновил свой вопрос) - person Java; 23.04.2012

Вы должны получить Liferay IDE и создать новый проект File->New->Liferay Project. Затем выберите «Портлет», дайте проекту имя и отображаемое имя.

screenShotOne

затем выберите JSF2.x и PrimeFaces

ScreenShot2

Вы должны получить что-то вроде: введите здесь описание изображения

вы добавляете портлеты, добавляя информацию в файлы liferay-display.xml, liferay-portlet.xml и portlet.xml. portlet.xml сопоставит страницу jsf с представлением портлета.

    <init-param>
    <name>javax.portlet.faces.defaultViewId.view</name>
    <value>/views/view.xhtml</value>
    </init-param>
person John J. Ryan    schedule 08.05.2013