Вы можете сделать это с помощью 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