Можно ли прочитать свойство из portal-ext.properties, используя JavaScript или api / jsonws в Liferay 7.1? - PullRequest
0 голосов
/ 31 января 2019

Я определяю модуль AMD под модулем OSGi.Мне нужно прочитать свойство host в определении загрузчика AMD.как я могу прочитать свойство из файла portal-ext.properties?

ниже приведен пример кода, как я определяю модуль AMD и свойство в файле portal-ext.properties.

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 голосов
/ 11 февраля 2019

Вы можете сделать это с помощью ftl или jsp, создавая свой JS со встроенным значением.Вместо того, чтобы создавать весь код из JSP, вы также можете просто собрать его небольшую часть, добавив значение в переменную JS, сделав его доступным для сценариев, которые будут загружаться позже.

Допустим, у вас есть модуль OSGi, код которого JS, вы можете создать .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> 

Но, как вы упомянули хост, вы, вероятно, ищете что-то гораздо более простое, чем это (особенно потому, что эточто-то вроде взлома), используя JS api от Liferay:

Liferay.ThemeDisplay.getPortalURL () и друзей, документы здесь: https://dev.liferay.com/de/develop/tutorials/-/knowledge_base/7-1/liferay-javascript-apis

...