overlaySelect事件未触发

时间:2018-04-11 13:26:33

标签: google-maps jsf primefaces jsf-2 primefaces-gmap

使用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组件。

1 个答案:

答案 0 :(得分:0)

我们使用的是默认的页眉和页脚脚本,这些脚本来自我们部门的另一个团队。显然他们使用了大量的jquery脚本,我注意到在Safari webinfo窗口中有多个jquery版本使用。 Primefaces使用jquery插件1.12.1,我们的团队使用1.11.0。似乎浏览器接受了所有这些,JSF不会生成任何错误并且会触发AJAX请求,但由于jquery版本冲突,执行的脚本似乎默默运行一些与Primefaces javascript文件不兼容的代码。删除页眉和页脚脚本时,一切都按预期工作!

jQuery的一个很好的功能当然可以检测到这种冲突并给出某种警告^^。我让其他团队调查此问题。案件结案。