📄 maprefreshphaselistener.java
字号:
package com.esri.solutions.jitk.data.svg.importer;
import java.util.Map;
import java.util.Vector;
import javax.faces.component.UIComponent;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import com.esri.adf.web.data.WebContext;
import com.esri.adf.web.data.WebMap;
import com.esri.adf.web.faces.component.MapControl;
import com.esri.adf.web.faces.renderkit.xml.ajax.AJAXResponseRenderer;
import com.esri.adf.web.faces.renderkit.xml.ajax.AJAXUtil;
public class MapRefreshPhaseListener implements PhaseListener {
private static Logger logger = Logger.getLogger(MapRefreshPhaseListener.class.getName());
//parameter names expected in request
static final String MAP_REFRESH = "mapRefresh";
static final String FORM_ID = "formId";
static final String MAP_ID = "mapId";
public PhaseId getPhaseId() {
return PhaseId.APPLY_REQUEST_VALUES;
}
public void beforePhase(PhaseEvent phaseEvent) {
//do nothing
}
public void afterPhase(PhaseEvent phaseEvent) {
FacesContext facesContext = phaseEvent.getFacesContext();
ExternalContext externalContext = facesContext.getExternalContext();
Map paramMap = externalContext.getRequestParameterMap();
//verify if request is to be processed by this PhaseListener
if (!MAP_REFRESH.equals((String) paramMap.get(MAP_REFRESH))) return;
try {
//get Form from view
UIComponent form = facesContext.getViewRoot().findComponent((String) paramMap.get(FORM_ID));
//get MapControl
MapControl mapControl = (MapControl) form.findComponent((String) paramMap.get(MAP_ID));
//get WebMap
WebMap webMap = mapControl.getWebMap();
//get WebContext
WebContext webContext = webMap.getWebContext();
//set event source as map, since operation is to be performed on the map
Vector eventSources = new Vector();
eventSources.add(mapControl.getId());
AJAXResponseRenderer ajaxRenderer = new AJAXResponseRenderer(facesContext, eventSources, form);
//refresh context to update all controls
webContext.refresh();
//render and get AJAX response Document
Document doc = ajaxRenderer.renderResponse(facesContext);
//initialize response
AJAXUtil.writeResponse(facesContext, doc);
} catch (Exception e) { logger.log(Level.FATAL, "Unable to render xml", e); }
finally { //notify Faces Lifecycle
facesContext.responseComplete();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -