使用primefaces 6.2
我有这个简单的代码:
<p:gmap center="50.848227, 4.356564" zoom="9" type="map" style="width:100%;height:600px" model="#{welcomePage.mapModel}">
<p:ajax event="overlaySelect" listener="#{welcomePage.onMarkerSelect}" />
</p:gmap>
在html页面的标题中:
<script src="http://maps.google.com/maps/api/js?key=*****" type="text/javascript"></script>
@WebPage
public class WelcomePage implements Serializable {
private static final long serialVersionUID = -2444997383150958426L;
@Getter
@Setter
MapModel mapModel;
@PostConstruct
public void init() {
mapModel = new DefaultMapModel();
... add data to mapModel...
}
public void onMarkerSelect(OverlaySelectEvent event) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "test", "test"));
}
}
我不知道为什么但是onMarkerSelect的方法永远不会被解雇。有谁可以给我一个提示?我之前从未使用过Gmap primefaces组件。
答案 0 :(得分:0)
我们使用的是默认的页眉和页脚脚本,这些脚本来自我们部门的另一个团队。显然他们使用了大量的jquery脚本,我注意到在Safari webinfo窗口中有多个jquery版本使用。 Primefaces使用jquery插件1.12.1,我们的团队使用1.11.0。似乎浏览器接受了所有这些,JSF不会生成任何错误并且会触发AJAX请求,但由于jquery版本冲突,执行的脚本似乎默默运行一些与Primefaces javascript文件不兼容的代码。删除页眉和页脚脚本时,一切都按预期工作!
jQuery的一个很好的功能当然可以检测到这种冲突并给出某种警告^^。我让其他团队调查此问题。案件结案。