访问自定义Portlet中的Liferay全局速度变量
到目前为止,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中,我
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实现中。您可能需要复制您感兴趣的代码部分,因为您通常无法直接调用它们。但是,您可能也不需要完全初始化
如果这有助于您找到实际的解决方案,请发布一些关于您实际解决问题的提示(或链接)谢谢您的帮助。。。我会尽力让你知道结果。。。再次感谢。