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

访问自定义Portlet中的Liferay全局速度变量,liferay,velocity,liferay-theme,liferay-velocity,Liferay,Velocity,Liferay Theme,Liferay Velocity,到目前为止,Liferay提供了一组全局变量,如init.vm中定义的,可供主题模板使用。这些变量在init.vm中设置,并位于Liferay ROOT.war中:$PATH\u TO\u WEBAPPS/ROOT/html/themes/\u unstyled/templates 在我的自定义主题portal\u normal.vm中,我只需添加#parse($init)即可使用它。这很有效 现在进入我的问题。我正在使用velocity模板发送我的电子邮件地址。因此,在我的portlet中,我

到目前为止,Liferay提供了一组全局变量,如
init.vm
中定义的,可供主题模板使用。这些变量在
init.vm
中设置,并位于Liferay ROOT.war中:
$PATH\u TO\u WEBAPPS/ROOT/html/themes/\u unstyled/templates

在我的自定义主题
portal\u normal.vm
中,我只需添加
#parse($init)
即可使用它。这很有效

现在进入我的问题。我正在使用velocity模板发送我的电子邮件地址。因此,在我的portlet中,我在位置创建了一个电子邮件模板,名为
$SOME\u portlet\u NAME/src/main/webapps/template/email.vm
。 我可以使用

VelocityContext velocityContext = new VelocityContext();
velocityContext.put("vp", velocityParameters);
但是我不能使用Liferay提供的默认变量,就像在主题中使用的那样

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

我试过什么?

  • 在模板内克隆并导入
    init.vm
    。哪一个没有 工作;愚蠢的我
  • 提供
    init.vm
    ROOT.war
    位置的完整路径。它也不起作用。(我很惊讶它竟然起作用。)
问题:

  • 有没有一种方法可以在自定义中使用这些速度全局变量 Portlet(即外部主题)

  • 使用Java可以实现这一点吗

  • 还是只执行LanguageUtil.get并发送值更好 到模板(这将是我最后的选择)


谢谢

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

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

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


如果这有助于您找到实际的解决方案,请发布一些关于您实际解决问题的提示(或链接)

谢谢您的帮助。。。我会尽力让你知道结果。。。再次感谢。