2016-11-30 7 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> 

とマイ

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

ManagedBeanすべては私のローカルコンピュータ上の開発で正常に動作している:コードは以下の通りです。マーカーがクリックされると、データ(アドレス)がインフォウインドウに表示されます。

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.MarkerdataがタイプObjectであり財産ではなくString:生産で
は、私のようなClassCastExceptionの多くを参照してください!

私は間違っていますか?なぜこれはいつか動作し、時には動作しないのですか?私はPrimefaces 5.3.7

+0

を私は本当に、なぜそのは、一貫性のない行動を伝えることはできませんが、何かがそこにありますあなたがキャストする前に 'if(marker.getData()instanceof myHelperClass)'をチェックすることに反対していますか? –

+0

そして文字列に含まれる内容を確認しましたか?あなただけの(そしてあなただけの)すべてがあなた自身をチェックすることができます。 – Kukeltje

+0

ロギングは期待通りに戻ります。com.mypackage.util.MyHelperClass @ 47535504'。文字列を返しません。これが私がここでこれを報告している理由です。 – codyLine

答えて

0

を使用してい

は、私はそれが大文字mを行方不明だと思う - myHelperClassをMyHelperClass

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

: - )...その後、アプリケーションはコンパイルされません。そして、時には他の状況では動作しません。 Javaでは珍しいですが、小文字の\ – Kukeltje

+0

@Kukeltjeでクラス名を始めるのは技術的に間違いではありません。それはちょっとタイプミスです。 – codyLine