liferay-7.1 - 是否可以在 Liferay 7.1 中使用 JavaScript 或 api/jsonws 从 portal-ext.properties 读取属性?
问题描述
我在 OSGi 模块下定义 AMD 模块。我必须阅读AMD 加载程序定义中的主机属性。如何从 portal-ext.properties 文件中读取属性?
下面是我如何在 portal-ext.properties 文件中定义 AMD 模块和属性的示例代码。
门户-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;
},
};
});
解决方案
您可以使用 ftl 或 jsp 执行此操作,构建嵌入值的 JS。除了从 JSP 创建整个代码之外,您还可以只构建它的一小部分,将值添加到 JS 变量,使其可用于稍后加载的脚本。
假设您有一个包含 JS 代码的 OSGi 模块,您可以创建一个 .js.jsp 来在发送之前构建 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:
Liferay.ThemeDisplay.getPortalURL() 和朋友,这里的文档: https ://dev.liferay.com/de/develop/tutorials/-/knowledge_base/7-1/liferay-javascript-apis
推荐阅读
- sql - BigQuery SQL 排除不在空结果中
- javascript - Javascript:为什么对象赋值中的“=”运算符会创建对现有对象的引用?
- ruby-on-rails - 单击链接以删除 Active Storage 和 Amazon S3 上的附件
- google-bigquery - bq 工具可以使用 GOOGLE_CLOUD_PROJECT 环境变量吗?
- typescript - 如何使用 Typescript 的引用和构建模式将 mono repo 编译为无服务器包?
- swift - viewDidLoad() 中的 Swift 4 变量初始化
- codenameone - ScaleImageLabel 不会在更大的屏幕上缩放图像
- c# - MSTest 扩展(获取测试类实例)
- perl - 如果基于条件的查找不起作用
- python - GSuite Api 访问:客户端未经授权使用此方法检索访问令牌