2010-06-25 95 views
1

我是新来的portlet,并对CMS门户中的工作方式有疑问(我们正在评估Liferay作为CMS)。为Liferay CMS/Portal编写portlet

比方说,我想创建一个portlet来显示特定课程所需的所有书籍。您无需登录即可查看,它将显示在公共网站上。

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

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

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

回答

0

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

+0

当我将portlet放在页面上时,无法设置变量吗?将两个相同的portlet放在同一个页面上是不可能的,每个portlet都引用不同的过程? – 2010-06-25 18:10:13

+0

您可以将2个portlet实例放在同一页面上。只需在配置Portlet的属性页面时更改URL参数。为每个portlet传递不同的courseId,以便它可以从数据库中获取正确的课程数据。 – 2010-06-25 18:46:59

+0

在JSR portets中,您*不应该*解析URL参数,请参阅下面的更多详细信息 – jayshao 2010-07-03 02:22:33

4

的Portlet 应该依靠URL参数直接 - 这个确切原因 - 你可能具有相同的页面上的多个实例,并且不想让他们碰撞(因为它们都会看到渲染过程中的参数,可以虽然只有一个会得到Action)

在Liferay中,您可以放下2个portlet,如果您通过EDIT或Liferay Config视图使用Preferences,那么prefs将分别作用于呈现初始状态。容器将处理保持2个portlet直。