Primefaces GMap OverlaySelect事件,并在单击时弹出输出面板



我在primeface 4中遇到了一个问题。我有一个地图,我想看到一个输出面板,而在地图上点击一个标记的位置

<p:gmap  model="#{addMarkers.emptyModel}" id="gmap" streetView="false"  navigationControl="true" mapTypeControl="true"  draggable="true" center="26.959512, -12.821044" zoom="8" type="ROADMAP" style="width:100%;height:500px">
           <p:ajax  event="overlaySelect" listener="#{addMarkers.onMarkerSelect}" id="open1"  update="messages"/>
           <p:gmapInfoWindow  id="infoWindow">
            <p:outputPanel style="text-align: center;  margin: auto">
                <p:commandButton ajax="true" type="button" value="open map"  onclick="PF('dlg').show();" />

当我刷新页面时,问题似乎解决了,令人惊讶的是,我得到了我的输出面板!调试后,我发现我的ManagedBeans

有一个小问题。
public void onMarkerSelect(OverlaySelectEvent event)  {
    marker = (Marker) event.getOverlay();
     FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "scanning the materials", "Site :"+ marker.getTitle() ));
}

在刷新之前,我得到:事件覆盖类型未知,值为NULL刷新后,我得到的事件叠加类型为"Marker",值为#440

如果您仍然对此感到困扰,我建议检查何时使用MapModel构造函数。它应该在bean的字段本身的定义中或在postInit函数中完成,以确保它只被调用一次,而不是在getter或类似的东西中。例子:

@ManagedBean(name = EstablecimientoInstalacionesViewDetailBean.ID)
@ViewScoped
public class ViewDetailBean extends AbstractViewDetailBean {
private final static MapModel mapModel = new DefaultMapModel();
[...]
@Override
protected void postInit() {
    refreshMapModel();
}

相关内容

  • 没有找到相关文章

最新更新