2012-11-14 12 views
0

我在應用程序中使用p:gmap組件,但是當我嘗試使用綁定屬性來引用bean中的GMap時,不起作用,並且地圖沒有顯示。<p:gmap組件的綁定不起作用 - Primefaces 3.4.1

JSF代碼:

<p:gmap binding="#{mapaBean.mapa}" center=" -26.9995, -49.686" zoom="11" type="ROADMAP" /> 

支持bean代碼:

public GMap getMapa() { 
    mapa = new GMap(); 
    mapa.setCenter("-26.9995, -49.686"); 
    mapa.setZoom(11); 
    mapa.setType("ROADMAP"); 
    mapa.setModel(geoModel); 
    mapa.setStyle("width:850px;height:450px"); 
    mapa.setWidgetVar("vMapa"); 
    return mapa; 
} 

我使用該組件沒有約束力,這是正常的工作...

Primefaces版本3.4.1 ; Glassfish 3.1.2.2

任何想法?

感謝

回答

3

我發現你相關同樣的問題...當我用綁定屬性來引用GMAP在託管bean,地圖不會被渲染。

我注意到文件gmap.js沒有被加載,因此GMap沒有被渲染。

我沒有找到這個問題的原因,但我找到了解決方法,但不是一個優雅的方式。 :D

我在將gmap.js複製到文件系統的項目目錄結構後,在我的xhtml文件中添加了此行。

<h:head> 
    ... 
    <h:outputScript library="primefaces" name="gmap/gmap.js" /> 
    ... 
</h:head> 

我希望這對你有所幫助!祝你好運! :d

0

另一種是對的bean創建一個GMAP實例(或任何部分呈現這種情況下),創建組件XHML來看,除去結合XHTML propperty搭配使用的每一個propperty,像這樣的例子:

豆:

// #{viewBean} 
private GMap googleMap; 
@PostConstruct 
public void onPostConstruct(){ 
    googleMap.setDisableDoubleClickZoom(Boolean.TRUE); 
    googleMap.setScrollWheel(Boolean.FALSE); 
    googleMap.setCenter(getMapCenterString()); 
    googleMap.setZoom(mapZoomLevel); 
    googleMap.setType("NORMAL"); 
    googleMap.setFitBounds(Boolean.FALSE); 
    // etc... 
} 
// getter and setter of googleMap 

XHTML瀏覽:

<p:gmap id="gmap" 
    center="#{viewBean.googleMap.center}" 
    zoom="#{viewBean.googleMap.zoom}" 
    type="#{viewBean.googleMap.type}" 
    model="#{viewBean.mapModel}" 
    scrollWheel="#{viewBean.googleMap.scrollWheel}" 
    disableDoubleClickZoom="#{viewBean.googleMap.disableDoubleClickZoom}" 
    etc... /> 

所以我們能繼續保持支持Bean組件的控制。

儘管primefaces修復了這個錯誤。

+0

這是一個關於PF 3.4.1,一個4歲的版本的問題。請說明您的版本。如果是3.4.1,檢查一個更新的版本,不要'只'說它(仍然?)是一個錯誤。 – Kukeltje

+0

這個問題是面對使用PF 6.0這就是爲什麼我來到這裏(搜索解決方案)。 –