在自定义 Portlet 中访问 Liferay 全局速度变量

Access Liferay Global Velocity Variable in Custom Portlet

截至目前,Liferay 提供了一组可由主题模板使用的全局变量,如 init.vm 中所定义。这些变量在 init.vm 中设置,位于 Liferay ROOT.war 内:$PATH_TO_WEBAPPS/ROOT/html/themes/_unstyled/templates.

在我的自定义主题 portal_normal.vm 中,我只需添加 #parse ($init) 即可使用它。效果很好。

现在进入我的问题。我正在使用速度模板发送我的电子邮件 address.So,在我的 portlet 中,我在 $SOME_PORTLET_NAME/src/main/webapps/template/email.vm 的位置创建了一个电子邮件模板。 我可以使用

将自定义变量发送到模板
VelocityContext velocityContext = new VelocityContext();
velocityContext.put("vp", velocityParameters);

但是我无法使用主题中使用的 Liferay 提供的默认变量。

我正尝试在我的电子邮件模板中使用 $languageUtil.get 进行国际化。

我尝试了什么?

问题:

谢谢!!

这可能不是完整的答案,而是一个从哪里开始的指针:您正在创建一个空白的 VelocityContext。这自然是空的——这并不奇怪。

当 Liferay 执行其 init.vm 和其他模板时,它不会在空白上下文中 运行(尽管 init.vm 看起来非常基本)。根据您的 Liferay 版本,查找 VelocityVariablesImplTemplateContextHelper 以获取脚本上下文的初始化。

请注意,这一切都存在于 portal-impl 中,因此在您通常无权访问的 Liferay 实现中。您可能需要复制您感兴趣的代码部分,因为您通常无法直接调用它们。但是,您可能也不需要完全初始化。

如果这有助于您找到实际的解决方案,请 post 一些关于您实际解决的问题的提示(或 link 给它)