Liferay Portal:正确使用运行时Portlet - processor.processPortlet()

时间:2011-07-27 19:30:41

标签: layout runtime liferay portlet portal

我正在尝试在Liferay 6.0.5的布局模板中使用Portlet,我遇到了一些麻烦。我尝试过一些教程,包括Liferay Wiki上提供的示例:http://www.liferay.com/community/wiki/-/wiki/Main/Add+runtime+portlets+to+a+layout#section-Add+runtime+portlets+to+a+layout-Related+Articles。问题是,这些例子都不适合我。对$ processor.processPortlet的调用什么都不做;我的布局模板生成一个空单元格。

我模板中的代码如下:

<div class="columns-1-2" id="main-content" role="main">
    #if ($browserSniffer.isIe($request) && $browserSniffer.getMajorVersion($request) < 8)
        <table class="portlet-layout">
        <tr>
            <td class="portlet-column portlet-column-only" id="column-1">
                $processor.processPortlet("currentPatient_WAR_opportalweb_INSTANCE_r2Be")
                $processor.processColumn("column-1", "portlet-column-content portlet-column-content-only")
            </td>
        </tr>
        </table>

                ......

    #end
</div>

我还要强调,尽管对这个portlet的调用是针对一个可实例化的自定义portlet,但我尝试过对非实例化portlet的大量其他类型的调用,甚至是Liferay的库存portlet:

$processor.processPortlet("tabs_WAR_tabsportlet")

$processor.processPortlet("58")

这些电话都不适合我。

我已经查看了liferay日志,并且与此模板相关的日志中没有错误,使用此模板加载页面,我的语法等等。我想知道这个特定调用的语法是否有在Liferay 6中更改了,或者如果有一些设置我需要在我的环境中调整以启用此功能?如果没有对processPortlet函数的调用工作,我的Liferay配置中是否有一个特定的东西,我应该看看它是否有效?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

我的代码中没有任何问题,这应该可行。但是你可能错过了你在条件表达式中的作用:

#if ($browserSniffer.isIe($request) && $browserSniffer.getMajorVersion($request) < 8)
...
#end

如果你使用IE6或IE7以外的任何东西进行测试,你将看不到条件块的内容