【问题标题】:Liferay/Icefaces portlet doesn't allow to access in doView methodsLiferay/Icefaces portlet 不允许在 doView 方法中访问
【发布时间】:2014-03-07 09:28:24
【问题描述】:

我对 doView() 方法的访问有疑问。 我使用 Liferay 6.3 作为 CMS、ICEFACES 3.3.0 和 tomcat 7 编写了一个 portlet。我使用 liferay-faces-bridge 来在 Liferay 中使用 Icefaces 框架。出于这个原因,我以这种方式设置了 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);
}

}

问题是当portlet 启动时doView() 方法没有被调用。也许这是一个桥梁问题。我不知道。

我希望有人可以帮助我。

谢谢

【问题讨论】:

    标签: liferay portlet icefaces managed-bean portletbridge


    【解决方案1】:

    根据您列出的 portlet.xml,您的 portlet 实现是 org.portletfaces.bridge.GenericFacesPortlet。仅仅因为您的支持 bean 实现了 GenericPortlet 并不能使其成为 portlet 的实现。 doView 在引用的 portlet 中实现,而不是在您的类中实现。

    如果你想覆盖GenericPortlet 方法,你不应该使用JSF。推论:如果您使用 JSF,请使用 JSF 样式控制器来访问您的业务逻辑。

    顺便说一句:您不应该将业务逻辑放入 portlet,而应该让 portlet 访问您的业务逻辑。不要让您的业务逻辑引用 portlet api:这将限制您的业务逻辑仅在该环境中运行。

    【讨论】:

      猜你喜欢
      • 2011-10-28
      • 1970-01-01
      • 2013-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 2013-02-03
      • 1970-01-01
      相关资源
      最近更新 更多