我在应用程序中使用p:gmap组件,但是当我尝试使用绑定属性来引用bean中的GMap时,它不起作用并且不显示地图。
JSF代码:
<p:gmap binding="#{mapBean.map}" center=" -26.9995, -49.686" zoom="11" type="ROADMAP" />
支持bean代码:
public GMap getMap() {
map = new GMap();
map.setCenter("-26.9995, -49.686");
map.setZoom(11);
map.setType("ROADMAP");
map.setModel(geoModel);
map.setStyle("width:850px;height:450px");
map.setWidgetVar("vMap");
return map;
}
当我使用此组件时没有绑定,并且它正常工作......
Primefaces版本3.4.1; Glassfish 3.1.2.2
有什么想法吗?
由于
答案 0 :(得分:3)
我发现了与您相关的相同问题...当我使用绑定属性在Managed Bean中引用GMap时,不会渲染地图。
我注意到文件gmap.js没有被加载,因此GMap也没有被渲染。
我没有找到导致这个问题的原因,但我找到了解决问题的方法,但这并不是一种优雅的方式。 :d
在将gmap.js复制到项目目录结构的文件系统后,我在xhtml文件中添加了这一行。
<h:head>
...
<h:outputScript library="primefaces" name="gmap/gmap.js" />
...
</h:head>
我希望这对你有所帮助!祝好运! :d
答案 1 :(得分:0)
在Backed Bean上创建GMap实例(或呈现此情况的任何组件)的替代方法,创建组件xhml视图,删除绑定xhtml属性并匹配两者的每个属性,如下例所示:< / p>
Bean:
// #{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修复了这个错误。