Java 如何在velocity模板中获取Liferay portlet实例id

Java 如何在velocity模板中获取Liferay portlet实例id,java,javascript,liferay,portlet,velocity,Java,Javascript,Liferay,Portlet,Velocity,我试图添加一个指向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=

我试图添加一个指向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名称(
displayportlet\u WAR\u myportlets
)获取实例id(
ia9r3lKTG3YL
),或者我真的必须硬编码它?此模板用于同一站点的多个实例,每个站点上的实例ID不同。

与其硬编码portlet ID,不如尝试在liferay中使用友好的URL映射概念。 使用这个概念,portlet ID被动态注入,portlet的URL在velocity中使用起来更简单


希望这能有所帮助。

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

$themeDisplay.getPortletDisplay().getId()


希望这有帮助。

我正在使用友好的URL