是否可以在Liferay 7.1中使用JavaScript或api / jsonws从portal-ext.properties中读取属性?

时间:2019-01-31 14:07:20

标签: liferay-7.1

我正在OSGi模块下定义AMD模块。我必须阅读AMD加载程序定义中的 host 属性。如何从portal-ext.properties文件读取属性?

下面是示例代码,我如何在portal-ext.properties文件中定义AMD模块和属性。

portal-ext.properties

# host detail
host={{host_url}}

定义AMD模块

Liferay.Loader.define('genelec-shopping-cart', [], function(){
    const host = ""; //here i have to read the property
    return{
        getHost:function(){
            return host;
        },
    };
});

1 个答案:

答案 0 :(得分:0)

您可以使用ftl或jsp进行此操作,并使用嵌入的值构建JS。 除了从JSP创建整个代码之外,您还可以只构建其中的一小部分,将值添加到JS变量中,使其可用于稍后加载的脚本。

假设您有一个包含JS代码的OSGi模块,则可以创建一个.js.jsp,以便在发送JS之前先构建JS。

使用JSP创建一小部分JS:

<%@ page contentType='application/javascript' %>

//here i have to read the property -> do it in java

Liferay.Loader.define('genelec-shopping-cart', [], function(){
    const host = "${read_in_java}"; 
    return{
        getHost:function(){
            return host;
        },
    };
});

您可以将其包含在其他JSP文件中,如下所示:

<c:url var='url' value='/variables.js.jsp'>
    <c:param name='namespace' value='${namespace}'/>
</c:url>

<script src='${url}'></script> 

但是正如您提到的主机一样,您可能正在使用Liferay的JS API寻找比这更简单的东西(尤其是因为这是一种hack):

Liferay.ThemeDisplay.getPortalURL()和朋友,文档在这里: https://dev.liferay.com/de/develop/tutorials/-/knowledge_base/7-1/liferay-javascript-apis