1

我正在尝试根据页面中的给定参数(例如查询字符串或请求参数)创建某种模板来显示不同的 portlet。

我有以下代码:

#if( $request.getParameter('sneiders') == 'snuffles' )
    <div class="col1" id="col1">$processor.processColumn("col1")</div>
#else
    <div class="col2" id="col2">$processor.processColumn("col2")</div>
#end

“col2”列中的 portlet 正确显示,但应该出现在 /my/url?sneiders=snuffles 中的“col1”列中的 portlet 没有正确显示。不知何故,liferay 只是打印空的 portlet,使用 css 类 portlet-static

但是,如果我稍微改变一下:

#if( $request.getParameter('sneiders') == 'snuffles' )
    <div class="col1" id="col1">$processor.processColumn("col1")</div>
#elseif( $request.getParameter('sneiders') == 'snuffzen')
    <div class="col2" id="col2">$processor.processColumn("col2")</div>
#else
    <div class="col1" id="col1">$processor.processColumn("col1")</div>
    <div class="col2" id="col2">$processor.processColumn("col2")</div>
#end

Portlet 将在任何这些情况下正确显示,这让我认为您需要一个“默认”案例来处理所有列

有人遇到过这个问题吗?这是一个问题还是我做错了?

任何帮助都感激不尽。此致

4

1 回答 1

2

如果我没记错的话,您可能需要在显示所有列的同时在布局中设置 portlet,否则布局将无法正确保存。因此,当您在仅显示 column-1 的情况下放置 portlet 时,之前在 column-2 中设置的 portlet 将消失。

您可以考虑做这样的事情,这样您就可以正确设置布局(但用户将无法使用参数来显示两列):

#if( $themeDisplay.getPermissionChecker().isOmniadmin() )
    <div class="col1" id="col1">$processor.processColumn("col1")</div>
    <div class="col2" id="col2">$processor.processColumn("col2")</div>
#elseif( $request.getParameter('sneiders') == 'snuffles' )
    <div class="col1" id="col1">$processor.processColumn("col1")</div>
#else
    <div class="col2" id="col2">$processor.processColumn("col2")</div>
#end
于 2014-01-29T15:47:44.603 回答