Liferay中如何区分页面?

How to distinguish pages in Liferay?

如何区分 Liferay 应用程序中的两个页面?

因此,假设我的应用程序有 2 个页面,并且我希望能够分辨出哪个页面是第一页,哪个是第二页。我将使用哪些数据来完成此操作?

我尝试使用 PLID 编号,这在单一环境中效果很好。

但是,如果我将我的 Liferay 应用程序部署到另一个环境,PLID 编号会有所不同。 因此,通过 PLID 编号区分 Liferay 页面对于单一环境应用程序来说很好,但如果我的应用程序要部署在多个环境中,那么这就不再是一个有效的解决方案。

那么,在 Liferay 中确定哪个页面是哪个页面的环境独立方式是什么?

渲染时,您可以从 themeDisplay 对象获取当前上下文,可像这样检索:

ThemeDisplay themeDisplay = (ThemeDisplay) renderRequest.getAttribute(WebKeys.THEME_DISPLAY);

有很多选项 - 但本质上页面之间没有定义的“顺序”:如果您想在两个页面上使用相同的 portlet,您可以选择

  • 配置页面,例如通过向页面添加自定义字段并将其设置为一页上神奇的已知值。您将从 themeDisplay 对象中获取当前呈现的页面
  • 在每个页面上配置 portlet,让每个实例都知道它的用途(例如,阅读有关 portlet 的“编辑”或“配置”模式的信息,并为其配置实施 UI - 参见 PortletPreferences)