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

时间:2015-10-14 08:04:55

标签: xml liferay liferay-6

我目前正在使用liferay 6.1。我想访问liferay-portlet.xml文件中的portal-ext.properties。有没有办法访问它?我想动态地从ext属性中替换版本。

的liferay-portlet.xml中

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

portal-ext.properties代码

version=3

1 个答案:

答案 0 :(得分:2)

不可能开箱即用 - 如果你检查PortletLocalServiceImpl._readLiferayPortletXML,你会看到:没有属性插值。

如果你检查PortalImpl.getStaticResourceURL,你会看到:CSS文件的URI中的?甚至会删除所有其他生成的参数(如上次修改的时间戳):

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

所以它从来没有打算在portlet的CSS URI中有任何查询参数。

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

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

但是,如果你只想增加一个版本标志,以确保在你改变某些东西时不缓存该文件:没有必要这样做。如果你没有添加问号,比如

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

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

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

其中123456main.css的修改时间。如果您在main.css中添加了其他一些文件,那么您只需要触摸&#34;每次更改其他文件时都会main.css