⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resourcephaselistener.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JAVA
字号:
package com.esri.solutions.jitk.web.event;

import com.esri.adf.web.data.WebContext;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Vector;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
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 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;
import com.esri.adf.web.util.XMLUtil;
import com.esri.solutions.jitk.common.resources.TextResources;

import org.apache.log4j.Logger;

/**
 * The MapLinksPhaseListener is used to intercept calls to the web adf, process
 * the request and send an XML response for processing on the web browser as part
 * of the AJAX request-response cycle.
 */
@SuppressWarnings("serial")
public class ResourcePhaseListener implements PhaseListener {
  private static String SHARED_RESOURCE_NAME = "res.solutions_jitk_tasks";
  private static String ERROR_MESSAGE = "resource.msg.error";
  private ResourceBundle resourceBundle;
  private Logger logger = Logger.getLogger(ResourcePhaseListener.class.getClass().getName());

  //add required param name to identify if request is to be processed by this phase listener
  private static final String REQUIRED_PARAM = "addResources";
  //add form id variable name as passed in request param string
  private static final String FORMID_PARAM = "formId";
  //add map id variable name as passed in request param string
  private static final String MAPID_PARAM = "mapId";

  protected final ResourceBundle getResourceBundle() {
	return resourceBundle;
  }

  protected final void setResourceBundle(ResourceBundle resourceBundle) {
	this.resourceBundle = resourceBundle;
  }

  public PhaseId getPhaseId() {
    return PhaseId.APPLY_REQUEST_VALUES;
  }

  public void beforePhase(PhaseEvent phaseEvent) {
    //do nothing
  }

  @SuppressWarnings("unchecked")
  public void afterPhase(PhaseEvent phaseEvent) {
    FacesContext facesContext = phaseEvent.getFacesContext();
    ExternalContext externalContext = facesContext.getExternalContext();
    Map paramMap = externalContext.getRequestParameterMap();

    //process only if request param hovertips=hovertips
    if (! REQUIRED_PARAM.equals((String) paramMap.get(REQUIRED_PARAM)))
      return;

    try {
      //get form element from view
      String formId = (String) paramMap.get(FORMID_PARAM);
      UIComponent form = facesContext.getViewRoot().findComponent(formId);
      if(form == null) {
        logger.error("Unable to find form (" + formId + ") for processing request.");
        return;
      }

      //get control to perform operation
      String mapId = (String) paramMap.get(MAPID_PARAM);
      MapControl mapControl = (MapControl) form.findComponent(mapId);
      if (mapControl == null) {
        logger.error("Unable to find map (" + mapId + ") for processing request.");
        return;
      }

      //create Vector of event sources
      Vector eventSources = new Vector();
      eventSources.add(mapId);

      //create AJAXResponseRenderer
      AJAXResponseRenderer responseRenderer = new AJAXResponseRenderer(facesContext, eventSources, form);

      //get web map & web context
      WebMap webMap = mapControl.getWebMap();
      WebContext webContext = webMap.getWebContext();

      //get extent of link
	  String resources = (String) paramMap.get("resources");
	  String zval = (String) paramMap.get("zoom");
	  String errUrl = "";
	  boolean zoom = true;
	  if (zval != null && zval.equalsIgnoreCase("false")) zoom = false;
	  if (resources != null && resources.length() > 0){
		  String[] resourceArray = resources.split(",");
		  for (int i = 0; i < resourceArray.length; i++){
			  errUrl += ResourceUtil.checkResource(resourceArray[i], webContext, zoom);
		  }
	  }
	  //get ajax xml response document
	  Document doc = responseRenderer.renderResponse(facesContext);
	  if (errUrl.length() > 0){
		  this.setResourceBundle(ResourceBundle.getBundle(SHARED_RESOURCE_NAME));
		  errUrl = TextResources.getResourceString(ERROR_MESSAGE) + "\n" + errUrl;
          Element responseElement = XMLUtil.createElement(doc, "jitk-resource-response", null, doc.getDocumentElement());
          XMLUtil.createElement("jitk-error-url", errUrl, responseElement);
	  }

      //write xml response
      AJAXUtil.writeResponse(facesContext, doc);
    }
    catch (Exception e) {
      logger.error("Error in " + ResourcePhaseListener.class.getClass().getName(), e);
    }
    finally {
      facesContext.responseComplete();
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -