2011-11-02 64 views
1

我有一个Liferay portal自定义主题,它通过portal_normal.vm中的一些标准Velocity代码在左侧部分中嵌入Portlet。当我第一次嵌入portlet时,我将属性portlet-setup-show-borders-default设置为“false”,这导致portlet在没有标题栏或其他“chrome”(这不是我想要的)的情况下呈现。Liferay主题中的嵌入式portlet - 如何强制刷新?

我将属性值更改为“true”,但是我发现在已加载portlet的页面上,它继续呈现没有边框和“chrome”的页面。但是,如果我加载了其他页面,那么portlet将正确呈现。

如何强制Liferay在我访问的第一页上正确重新绘制portlet?我无法在Admin GUI中找到任何可能会强制某些缓存副本被清除的内容(我更喜欢这一点),而且很多Google搜索功能也没有显示任何可行的功能。我发现有一个看起来像它可能工作的文章(http://www.liferay.com/community/forums/-/message_boards/message/772138),但Artur在第二条评论中发布的代码对于一般的portlet,只是Web Content portlet和文章不起作用。

有没有其他人遇到这个,并找到了解决办法?请尽快通知我!

在此先感谢

- 乔 -

回答

2

终于找到我需要的Liferay的社区论坛网站上的信息,但它需要一个非常具体搜索词在谷歌找到它。在这里分享信息,让其他人更容易(我希望)。

当一个portlet嵌入到主题中时,为该主题加载的每个页面都会将VelocityPortletPreferences设置存储在数据库的PortletPreferences表中。即使您更改了主题的模板代码内的首选项设置,Liferay也会忽略该更改并使用数据库中存储的首选项值。清除这些存储值的唯一方法是删除PortletPreferences表中与portlet ID相对应的行。

delete from PortletPreferences where portletId = '<your-portlet-id-here>' 

一旦你做到了这一点(不需要Liferay的服务重新启动),则可以重新加载了未正常显示的网页,他们现在会拿起更新偏好设置。

请注意,重新加载页面后,更新后的首选项将再次存储在数据库中,因此如果需要进行其他更改,则必须再次删除该portlet的行。