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

У меня проблема с доступом к методам doView(). Я создал портлет, используя Liferay 6.3 в качестве CMS, ICEFACES 3.3.0 и tomcat 7. Я использовал liferay-faces-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() не вызывается. Возможно проблема в мосте. Я не знаю.

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

Спасибо


person antopas    schedule 07.03.2014    source источник


Ответы (1)


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

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

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

person Olaf Kock    schedule 07.03.2014