javascript - Primefaces GMap Overlay Select 事件并在单击时弹出输出面板

标签 javascript jsf jakarta-ee primefaces xhtml

我在 primeface 4 中遇到问题。我有一张 map ,我想在单击 map 中的标记位置时看到输出面板

<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();
}

关于javascript - Primefaces GMap Overlay Select 事件并在单击时弹出输出面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31519113/

相关文章:

java - 带有列表迭代器的 ClassCastException Java

html - 使用 JSF h :outputLink to produce a page anchor

java - EJB服务器和EJB容器提供的功能有什么区别?

javascript - 选择的值未显示在输入值中

用于移动设备的 JavaScript 图表库

javascript - 如何让我的 Jchartfx 面积图显示在我的 gridview 下方?

jsf - 单击按钮即可更新输入文本字段

javascript - 无法从 Bootstrap 弹出窗口中的输入元素获取值

Java Jdbc 事务

java - 业务审计日志 - 推荐的库或方法?