2014-03-07 40 views
0

我在doView()方法中訪問存在問題。 我已經使用Liferay 6.3構建了一個portlet,作爲CMS,ICEFACES 3.3.0和tomcat 7.爲了在Liferay中使用Icefaces框架,我使用了一個liferay-faces-bridge。出於這個原因,我已經設置好的了這樣portlet.xml中:Liferay/Icefaces portlet不允許在doView方法中訪問

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

} 

的問題是,當portlet啓動doView()方法不會被調用。也許這是一個橋樑問題。我不知道。

我希望有人能幫助我。

感謝

回答

0

您的portlet實現 - 根據您列出的portlet.xml - 是org.portletfaces.bridge.GenericFacesPortlet。僅僅因爲你的支持bean實現了GenericPortlet並沒有使它成爲Portlet的實現。 doView在引用的portlet中實現,而不是在您的類中實現。

如果您想覆蓋GenericPortlet方法,則不應使用JSF。推論:如果您使用JSF,請使用JSF樣式控制器來訪問您的業務邏輯。順便說一句:你不應該把你的業務邏輯放到一個portlet中,而是讓portlet訪問你的業務邏輯。沒有業務邏輯引用portlet API:這會限制業務邏輯僅在該環境中運行。

相關問題