Liferay:是否可以通过portlet定义初始化依赖?

时间:2012-06-21 12:13:38

标签: dependencies initialization liferay portlet

我有两个portlet:Portlet-A和Portlet-B。

Portlet-A进行一些数据初始化并将其存储在共享范围内。

初始化期间的Portlet-B需要来自共享范围的此数据(来自Portlet-A)。

但是,我需要定义Portlet-A必须在Portlet-B之前启动(呈现)。

Liferay是否可以定义一些初始化顺序,或类似于portlet依赖?

2 个答案:

答案 0 :(得分:4)

如果我理解正确,您需要在同一页面上的Portlet-B之前呈现Portlet-A。

然后你可以在liferay-portlet.xml<render-weight>50</render-weight>中定义它,render-weight越多,portlet将呈现的速度越快,换句话说,如果Portlet的render-weight - B小于Portlet-A然后它将在Portlet-A之后呈现。

有关DTD

render-weight的更多说明

希望这有帮助。

答案 1 :(得分:3)

据我所知,Liferay对portlet进行了延迟加载,因此你无法保证portlet初始化的顺序以及portlet doView()调用。

当您在单个页面上使用多个Portlet时,您遇到的问题是常见问题。

这里,常见的解决方法是,setter portlet(在你的case portlet A中)应该在processAction()方法中设置属性,而getter portlet(portlet B)应该从doView()获取。

原因是因为你不能保证doView()的顺序,但是,如果你正在触发actionURL,那么在doView()之前总会调用processAction()

因此,在呈现UI时,该属性将可用于所有其他portlet。存在保证!