参考:Server Java 开发实战---自定义command
command里面就是命令按钮。在我们的ArcGIS Server的Web ADF里面,command被用来做一些不用跟地图交互的工作.
1.编写java类,实现command的功能
command里面就是命令按钮。在我们的ArcGIS Server的Web ADF里面,command被用来做一些不用跟地图交互的工作.
1.编写java类,实现command的功能
代码
package com.demo;
import com.esri.adf.web.data.WebContext;
import com.esri.adf.web.data.geometry.WebExtent;
public class MyFullExtent {
WebContext context;
public WebContext getContext() {
return context;
}
public void setContext(WebContext context) {
this.context = context;
}
public void setFullExtent() {
try {
WebExtent ex = context.getWebMap().getFullExtent();
context.getWebMap().setCurrentExtent(ex);
context.refresh();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
2.在faces-config.xml文件,在里面添加如下配置:web context作为一个属性,用来初始化MyFullExtent,#{mapContext}指向了一个在faces-config.xml文件中定义的另外一个Bean
代码
<managed-bean>
<managed-bean-name>myFullExtent</managed-bean-name>
<managed-bean-class>com.demo. MyFullExtent </managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>context</property-name>
<value>#{mapContext}</value>
</managed-property>
</managed-bean>
3.在页面中调用
<a:command id="fullExtent"
action="#{myFullExtent. setFullExtent }"
toolText="全图显示" />
4.错误:Managedbean myFullExtent could not be created 引用的对象 "#{mapContext}" 的范围比引用对象小
原因为myFullExtent的managed-bean-scope属性为session,而mapContext的managed-bean-scope属性为request,调用的对象的作用范围应大于等于调用者的作用范围。此处将session改为request即可。