Primefaces GMap Overlay Select事件并在点击时弹出输出面板
Primefaces GMap OverlaySelect event and poping up an output panel while clicking
我在 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();
}
我在 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();
}