Portlet Liferay/Icefaces tidak mengizinkan akses dalam metode doView

Saya mempunyai masalah dengan akses pada metode doView(). Saya telah membuat portlet menggunakan Liferay 6.3 sebagai CMS, ICEFACES 3.3.0 dan Tomcat 7. Saya menggunakan liferay-faces-bridge untuk menggunakan kerangka Icefaces di Liferay. Untuk alasan ini saya telah mengatur portlet.xml dengan cara ini:

<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>

Saya juga punya ManagedBean seperti ini (untuk logika bisnis):

@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);
}

}

Masalahnya adalah ketika portlet dimulai, metode doView() tidak dipanggil. Mungkin ini masalah jembatan. Aku tidak tahu.

Saya harap seseorang dapat membantu saya.

Terima kasih


person antopas    schedule 07.03.2014    source sumber


Jawaban (1)


Implementasi portlet Anda - sesuai dengan portlet.xml yang Anda daftarkan - adalah org.portletfaces.bridge.GenericFacesPortlet. Hanya karena backing bean Anda mengimplementasikan GenericPortlet tidak menjadikannya implementasi portlet. doView diimplementasikan di portlet yang direferensikan, bukan di kelas Anda.

Jika Anda ingin mengganti metode GenericPortlet, Anda sebaiknya tidak menggunakan JSF. Akibat wajarnya: Jika Anda menggunakan JSF, gunakan pengontrol gaya JSF untuk mengakses logika bisnis Anda.

Omong-omong: Anda tidak boleh memasukkan logika bisnis Anda ke dalam portlet, melainkan membuat portlet tersebut mengakses logika bisnis Anda. Jangan referensikan logika bisnis Anda ke api portlet: Itu akan membatasi logika bisnis Anda untuk berjalan hanya di lingkungan itu.

person Olaf Kock    schedule 07.03.2014