关于布局:Liferay 门户:正确使用运行时 Portlet——processor.processPortlet()

Liferay Portal: Using Runtime Portlets correctly -- processor.processPortlet()

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

我的模板中的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
    #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

我还要强调的是,虽然对这个 portlet 的调用是对一个可实例化的自定义 portlet 的调用,但我已经尝试了许多其他类型的对不可实例化的 portlet 的调用,甚至是 Liferay 的股票 portlet:

1
2
3
$processor.processPortlet("tabs_WAR_tabsportlet")

$processor.processPortlet("58")

这些电话都不适合我。

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

先谢谢你!


我在您的代码中没有发现任何问题,这应该可行。但是您可能没有注意到您在条件表达式中:

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

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