我正在使用Primefaces 6.0和Liferay 6.2.5 tomcat bundle开发Liferay Primefaces portlet。我正在使用Liferay Faces的旧版本方案。
然后我决定切换到6.2,2.2,primefaces和maven的here当前版本。
我的问题是我有一些使用primefaces gmap组件的portlet,所以我需要包含谷歌地图javascript,我用下面的代码做了:
<h:head>
<script
src="https://maps.google.com/maps/api/js?key=MY_KEY"
type="text/javascript" />
</h:head>
尽管之前这种方法完美无缺,但在升级之后它无效。实际上,我不能使用上面的代码包含任何脚本。在head标签中包含远程javascript的任何帮助/解决方法?
答案 0 :(得分:1)
4.1.0
中修复了FACES-2974。这是Liferay Faces Bridge中的regression bug (FACES-2974) 4.0.0
(以及3.0.0
和2.0.0
)。
要解决此问题,您可以创建具有name
属性的复合组件。该名称必须以“css
”或“js
”结尾,并且每个视图应该是唯一的,以确保始终加载它。例如,创建以下 resources/workaround/headElements.xhtml
文件:
<?xml version="1.0" encoding="UTF-8"?>
<ui:component xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:cc="http://xmlns.jcp.org/jsf/composite" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/2002/08/xhtml/xhtml1-transitional.xsd">
<!-- Workaround for https://issues.liferay.com/browse/FACES-2974 -->
<cc:interface>
<cc:attribute name="name" required="true" />
</cc:interface>
<cc:implementation>
<cc:insertChildren />
</cc:implementation>
</ui:component>
要将此组件与上述google地图脚本一起使用:
<h:head>
<workaround:headElements name="#{view.viewId}.js">
<script src="https://maps.google.com/maps/api/js?key=MY_KEY"
type="text/javascript" /></script>
</workaround:headElements>
<!-- ... -->
</h:head>