พอร์ตเล็ต 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)


การใช้งานพอร์ตเล็ตของคุณ - ตาม portlet.xml ที่คุณแสดงรายการ - คือ org.portletfaces.bridge.GenericFacesPortlet เพียงเพราะ backing bean ของคุณใช้ GenericPortlet ไม่ได้ทำให้เป็นการใช้งานพอร์ตเล็ต doView ถูกนำไปใช้ในพอร์ตเล็ตที่อ้างอิง ไม่ใช่ในคลาสของคุณ

หากคุณต้องการแทนที่วิธีการ GenericPortlet คุณไม่ควรใช้ JSF ข้อพิสูจน์ของสิ่งนั้น: หากคุณใช้ JSF ให้ใช้ตัวควบคุมสไตล์ JSF เพื่อเข้าถึงตรรกะทางธุรกิจของคุณ

อย่างไรก็ตาม: คุณไม่ควรใส่ตรรกะทางธุรกิจของคุณลงในพอร์ตเล็ต แต่ควรให้พอร์ตเล็ตเข้าถึงตรรกะทางธุรกิจของคุณ อย่าให้ตรรกะทางธุรกิจของคุณอ้างอิงพอร์ตเล็ต API: ซึ่งจะจำกัดตรรกะทางธุรกิจของคุณให้ทำงานในสภาพแวดล้อมนั้นเท่านั้น

person Olaf Kock    schedule 07.03.2014