如何在速度模板中获取Liferay portlet实例id

时间:2015-04-09 13:33:19

标签: java javascript liferay portlet velocity

我正在尝试添加一个指向速度模板的链接,该模板调用可实例化portlet中的操作。看起来像这样

<a href="/mypage?p_p_id=displayportlet_WAR_myportlets_INSTANCE_ia9r3lKTG3YL&p_p_lifecycle=0&p_p_state=pop_up&p_p_mode=view&p_p_col_id=column-1&p_p_col_pos=1&p_p_col_count=2&_displayportlet_WAR_myportlets_INSTANCE_ia9r3lKTG3YL_struts.portlet.action=%2Fview%2FdisplayCart">click here</a>

有没有办法使用javascript或一些内置函数使用portlet名称(ia9r3lKTG3YL)来获取实例id(displayportlet_WAR_myportlets),还是我真的需要对其进行硬编码?此模板用于同一站点的多个实例,并且每个站点上的实例ID都不同。

2 个答案:

答案 0 :(得分:1)

不是硬编码portlet ID,而是值得在liferay中使用友好URL映射概念进行尝试。 使用这个概念,动态注入portlet ID,并且在port中使用URL到portlet更加简单。

http://www.liferay.com/en_GB/community/wiki/-/wiki/Main/FriendlyURLMapper

希望这有帮助。

答案 1 :(得分:1)

对于仍在寻找答案的人,您可以使用$ themeDisplay变量在Velocity模板中获取您的portlet实例ID:

$themeDisplay.getPortletDisplay().getId();

希望这有帮助。