【问题标题】:overlaySelect event not fired未触发 overlaySelect 事件
【发布时间】:2018-04-11 13:26:32
【问题描述】:

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

【问题讨论】:

  • @Kukeltje 所有可调试的东西... gmap 显示正确添加的标记。但是单击它们不会触发 onMarkerSelect 方法。放入方法断点确保事件不会被触发......还在不同的浏览器上进行了测试,使用不同的 gmap 选项,但没有运气。
  • 如果在点击期间进行了实际的 ajax 调用,您是否在浏览器中进行了调试? (在点击和调用方法之间发生了很多事情)。您添加了一个消息组件来检查错误,您在开发模式下运行您的应用程序,检查了服务器端日志文件? ETC?请下次提及所有这些事情。 “未调用方法”是非常少的信息,在寻找根本原因方面并没有显示出很多努力

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


【解决方案1】:

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

当然,检测这种冲突并给出某种警告是 jQuery 的一个很好的功能 ^^。我要求其他团队调查这个问题。结案。

【讨论】:

  • “当然,检测这种冲突并给出某种警告会是浏览器的一个不错的功能^^。” 很难......几乎不可能. JQuery 本身可以包含它...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-08
  • 2019-01-31
  • 2013-04-09
  • 2015-07-25
  • 2017-06-25
  • 2012-02-21
相关资源
最近更新 更多