Портлет Liferay/Icefaces не разрешает доступ в методах doView

У меня проблема с доступом к методам doView(). Я создал портлет, используя Liferay 6.3 в качестве CMS, ICEFACES 3.3.0 и tomcat 7. Я использовал liferay-Face-Bridge, чтобы использовать каркас Icefaces в Liferay. По этой причине я настроил portlet.xml следующим образом:

<portlet>
            <portlet-name>FinalTest</portlet-name>
            <display-name>FinalTest</display-name>
            <portlet-class>org.portletfaces.bridge.GenericFacesPortlet</portlet-class>
            <init-param>
                <name>javax.portlet.faces.defaultViewId.view</name>
                <value>/index.xhtml</value>
            </init-param>
            <expiration-cache>0</expiration-cache>
            <supports>
                <mime-type>text/html</mime-type>
            </supports>
            <portlet-info>
                <title>FinalENELTest</title>
                <short-title>FinalENELTest</short-title>
                <keywords>FinalENELTest</keywords>
            </portlet-info>
            <security-role-ref>
                <role-name>administrator</role-name>
            </security-role-ref>
            <security-role-ref>
                <role-name>guest</role-name>
            </security-role-ref>
            <security-role-ref>
                <role-name>power-user</role-name>
            </security-role-ref>
            <security-role-ref>
                <role-name>user</role-name>
            </security-role-ref>
        </portlet>

Также у меня есть ManagedBean вот так (для бизнес-логики):

@ManagedBean(name="backingBean")
@SessionScoped
public class BackingBeanImpl extends GenericPortlet{ 

          .... 

    @Override
protected void doView(RenderRequest request, RenderResponse response)
        throws PortletException, IOException {
    // TODO Auto-generated method stub
    System.out.println("I'M HERE");
    super.doView(request, response);
}

}

Проблема в том, что при запуске портлета метод doView() не вызывается. Может быть, это проблема моста. Я не знаю.

Я надеюсь, что кто-то может помочь мне.

Спасибо

1 ответ

Решение

Ваша реализация портлета - в соответствии с portlet.xml, который вы перечисляете - org.portletfaces.bridge.GenericFacesPortlet, Тот факт, что ваш компонент поддержки реализует GenericPortlet, не делает его реализацией портлета. doView реализован в ссылочном портлете, а не в вашем классе.

Если вы хотите переопределить GenericPortlet методы, вы не должны использовать JSF. Следствие этого: если вы используете JSF, используйте контроллеры стиля JSF для доступа к вашей бизнес-логике.

Кстати, вы не должны помещать свою бизнес-логику в портлет, а должны делать так, чтобы портлет обращался к вашей бизнес-логике. Не используйте вашу бизнес-логику для API-интерфейса портлета: это ограничит вашу бизнес-логику для работы только в этой среде.

Другие вопросы по тегам