2014-03-07 34 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:这会限制业务逻辑仅在该环境中运行。