是否可以在 liferay-portlet.xml 文件中使用 portal-ext.properties 变量?

Is it possible to use portal-ext.properties variable in liferay-portlet.xml file?

我目前使用的是 liferay 6.1。我想访问 liferay-portlet.xml 文件中的 portal-ext.properties。有什么方法可以访问它吗?我想动态地从 ext 属性替换版本。

liferay-portlet.xml

<header-portlet-css>/css/main.css?v={version}</header-portlet-css>

传送门-ext.properties代码

version=3

开箱即用是不可能的 - 如果您选中 PortletLocalServiceImpl._readLiferayPortletXML,您会看到:没有 属性 插值。

并且如果您检查 PortalImpl.getStaticResourceURL,您将看到:CSS 文件的 URI 中的 ? 甚至会丢弃所有其他生成的参数(例如上次修改的时间戳):

if (uri.indexOf(CharPool.QUESTION) != -1) {
    return uri;
}

因此,从未打算在 portlet 的 CSS URI 中包含任何查询参数。

如果您确实需要 属性,您可以更改构建过程以在构建期间插入版本属性。

或者您创建一个 HookExt Plugin 来覆盖 PortalImpl.getStaticResourceURL 并为您进行插值。这是更复杂但更好的选择,因为它也可以添加 Liferay 特定参数。

但是,如果您只是想增加一个版本标志以确保在您更改某些内容时文件不会被缓存:没有必要这样做。如果不加问号,比如

<header-portlet-css>/css/main.css</header-portlet-css>

比 Liferay 会自动添加一个时间戳参数:

.../css/main.css?...&t=1234567

其中 123456 是您的 main.css 的修改时间。如果您在 main.css 中包含一些其他文件,那么每次更改其中一个文件时,您只需 "touch" main.css