【问题标题】:Writing Portlets for Liferay CMS/Portal为 Liferay CMS/Portal 编写 Portlet
【发布时间】:2010-06-25 16:58:12
【问题描述】:

我是 Portlet 的新手,对它们在 CMS 门户中的工作方式有疑问(我们将 Liferay 评估为 CMS)。

例如,假设我想创建一个 portlet 来显示特定课程所需的所有书籍。您无需登录即可查看此内容,它会显示在公共网站上。

在 CMS 中,我将为 ENGL-100 和 HIST-300 创建两个页面。

我想在每个页面上添加相同的 portlet。我希望将 portlet 部署为 war 文件。

我将如何告诉每个页面上的 portlet 查找哪个课程?不要告诉我我必须为每个主题更改 portlet.xml 文件。 Portlet 是否可以访问 URL 参数?

【问题讨论】:

    标签: java liferay portlet jsr168 jsr286


    【解决方案1】:

    Portlets不应该直接依赖 URL 参数 - 正是因为这个原因 - 您可能在同一页面上有多个实例,并且不希望它们发生冲突(因为它们都会看到渲染期间的参数,但只有一个会获得动作)

    在 Liferay 中,您可以只删除 2 个 portlet,如果您通过 EDIT 或 Liferay Config 视图使用 Preferences,则 prefs 将单独作用域以呈现初始状态。容器将处理保持 2 个 portlet 笔直。

    【讨论】:

      【解决方案2】:

      是的,portlet 可以处理 URL 参数。这就是你实现你想要的东西的方式。根据您访问的页面,您只需将课程主题作为 URL 参数传递,然后让 portlet 为您处理它。当然,你必须去数据库寻找正确的课程,等等才能返回正确的数据。

      【讨论】:

      • 在页面上放置portlet 时不能设置变量吗?是否不可能将 2 个相同的 portlet 放在同一个页面上,每个 portlet 都引用不同的课程?
      • 您可以将一个portlet 的2 个实例放在同一个页面上。只需在配置 portlet 的属性页面时更改 URL 参数。为每个 portlet 传递一个不同的 courseId,以便它可以从数据库中获取正确的课程数据。
      • 在 JSR portets 中,你不应该解析 URL 参数,详情见下文
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      • 2013-07-31
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多