2016-11-30 52 views
0

我想在Gmap的infoWindow中顯示一些數據。代碼如下:ClassCastException與Primefaces GMap OverlaySelect事件

<p:gmap center="#{mybean.latitude}, #{mybean.longitude}" zoom="15" 
        type="ROADMAP" model="#{mybean.mymapModel}" > 
     <p:ajax event="overlaySelect" listener="#{mybean.onMarkerSelect}" /> 
     <p:gmapInfoWindow > 
      <div class="popup_title prem">Address:</div> 
      <div class="popup_address">#{mybean.markerAll.street}, #{mybean.markerAll.zipcode} #{mybean.markerAll.city}</div> 
     </p:gmapInfoWindow> 
</p:gmap> 

和我ManagedBean

public void onMarkerSelect(OverlaySelectEvent event) { 
     marker = (Marker) event.getOverlay(); 
     markerAll = (myHelperClass) marker.getData(); 
    } 

一切都在發展我的本地計算機上工作的罰款。點擊標記時,數據(地址)顯示在infoWindow中。
在生產我看到了很多像ClassCastException

FullAjaxExceptionHandler: An exception occurred during processing JSF ajax request. Error page '/error.jsf' will be shown.  
    java.lang.ClassCastException: java.lang.String cannot be cast 
     to com.mypackage.util.myHelperClass 
     at com.mypackage.myBean.onMarkerSelect(myBean.java:416) 
... 
... 

的財產org.primefaces.model.map.MarkerdataObject型的,而不是String

我在做什麼錯?爲什麼這個工作有時候有時候不行?

我使用Primefaces 5.3.7

+0

我真的不能告訴你爲什麼它的表現不一致,但有什麼這與在轉換之前檢查'if(marker.getData()instanceof myHelperClass)'是否相反? –

+0

你有沒有檢查字符串包含什麼?所有簡單的事情,你(只有你)可以檢查自己 – Kukeltje

+0

日誌記錄按預期返回'com.mypackage.util.MyHelperClass @ 47535504'。它不返回一個字符串。這就是我在這裏報告的原因。 – codyLine

回答

0

我認爲這是缺少大寫字母米 - 由MyHelperClass

myHelperClass
public void onMarkerSelect(OverlaySelectEvent event) { 
    marker = (Marker) event.getOverlay(); 
    markerAll = (MyHelperClass) marker.getData(); 
} 
+0

: - )...然後,應用程序甚至不會編譯...並且有時無法工作,而無法在其他情況下工作。雖然它在java中並不常見,但用小寫字母開頭的類名在技術上並沒有錯誤\ – Kukeltje

+0

@Kukeltje,很激動。它只是一個錯字。 – codyLine