header - liferay 中 header-portlet-javascript 的可配置值

标签 header liferay portlet

header-portlet-javascript 是否可以从系统属性中获取?

例如:

<header-portlet-javascript>${external.js.url}</header-portlet-javascript>

最佳答案

一般来说,这是不可能的。

但是,如果您想要包含的 Javascript 出现在您的门户的每个页面上是可以的,您可以在 Liferay 主题中添加对它的引用。在主题内,您可以执行动态操作来检索正确的 JS url,例如使用门户属性:

#set($jsUrl = $propsUtil.get("external.js.url"))
<script type="text/javascript" src="$jsUrl"></script>

要对 System 属性产生相同的效果,事情会变得更复杂一些。据我所知,没有办法从注入(inject)的 Velocity 变量中获取系统属性。因此,我们需要创建一个小的事件处理程序钩子(Hook),将这个属性注入(inject)到 Velocity 上下文中。

门户网站属性

servlet.service.events.pre=my.custom.ServicePreAction

ServicePreAction.java

public class ServicePreAction extends Action {

    public void run(HttpServletRequest request, HttpServletResponse response) {
        Map<String,Object> veloVars = new HashMap<String,Object>();
        veloVars.put("externalJSurl", System.getProperty("external.js.url"));
        request.setAttribute(WebKeys.VM_VARIABLES, veloVars);
    }

}

portal_normal.vm

<script type="text/javascript" src="$externalJSurl"></script>

关于header - liferay 中 header-portlet-javascript 的可配置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13181390/

相关文章:

css - 在 css 中使用 % 作为 Logo 时如何使我的标题 Logo 可点击

javascript - 在 native react 中以不同方式对齐两个 child

java - 从 Liferay 移除 Alloy UI

java - Liferay 控制台 Groovy 脚本缺少方法错误

java - 关闭liferay portlet中的jdbc资源

java - Liferay 钩子(Hook),jsp 不能在 glassfish 上编译

c++ - 将 "third party" header 包含到 C++ 项目的最佳方法是什么

c - 在 C 头文件中隐藏实现和辅助函数

java - 在 JSF 中嵌入 portlet

java - 如何从 Portlet 类中获取 Liferay 站点名称?