我正在OSGi模块下定义AMD模块。我必须阅读AMD加载程序定义中的 host 属性。如何从portal-ext.properties文件读取属性?
下面是示例代码,我如何在portal-ext.properties文件中定义AMD模块和属性。
# host detail
host={{host_url}}
Liferay.Loader.define('genelec-shopping-cart', [], function(){
const host = ""; //here i have to read the property
return{
getHost:function(){
return host;
},
};
});
答案 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