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

📄 taskcontrolledtaskrenderer.java

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


import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;

import org.apache.log4j.Logger;
import org.w3c.dom.Element;

import com.esri.adf.web.data.tasks.TaskInfo;
import com.esri.adf.web.faces.component.TaskControl;
import com.esri.adf.web.faces.renderkit.xml.ajax.TaskRenderer;
import com.esri.solutions.jitk.web.tasks.IRenderAware;
import com.esri.solutions.jitk.web.tasks.RenderAwareTaskDescription;

public class TaskControlledTaskRenderer extends TaskRenderer {
	private static Logger _logger = Logger.getLogger(TaskControlledTaskRenderer.class.getName());
	
	public Object getOriginalState(UIComponent component) { 
	    TaskControl taskControl = (TaskControl) component;
	    TaskInfo taskInfo = taskControl.getTaskInfo();
		
		//If task is render controlled, don't go through ADF 
	    //introspection logic
	    if (taskInfo.getTaskDescriptor() instanceof RenderAwareTaskDescription) {
			return "RenderControlled";
		}
		else {
			return super.getOriginalState(component);
		}
	}
	
	public void renderAjaxResponse(final FacesContext context,
	                               final UIComponent component,
	                               final Object state,
	                               final boolean isEventSource,
	                               final Element parentElement) {
		try {
		    TaskControl taskControl = (TaskControl) component;
		    TaskInfo taskInfo = taskControl.getTaskInfo();
		    String taskName = taskInfo.getTaskDescriptor().getName();
		    
		    if (taskName == null) {
		    	taskName = "(null)";
		    }
	
		    if (taskInfo.getTaskDescriptor() instanceof RenderAwareTaskDescription) {
		    	IRenderAware renderAware = (IRenderAware) taskInfo.getTaskDescriptor();
		    	
		    	if (renderAware.isShouldRender()) {
		    		_logger.debug("Task '" + taskName + "' render aware, rendering will take place");
		    		// Due to ADF impl in beta, need to pass in a state value that is different than "RenderControlled"
		    		// super.renderAjaxResponse() will call getOriginalState in order to determine whether
		    		// or not to render.
		    		super.renderAjaxResponse(context, component, System.currentTimeMillis(), isEventSource, parentElement);
		    		renderAware.setShouldRender(false);
		    	}
		    	else {
		    		//_logger.debug("Task '" + taskName + "' render aware, rendering will NOT take place");
		    	}
		    } 
		    else {
		    	_logger.debug("Task '" + taskName + "' NOT render aware, delegating rendering");
		    	super.renderAjaxResponse(context, component, state, isEventSource, parentElement);
		    }
		}
		catch (Exception ex) {
			_logger.error("Task renderering could not be controlled, delegating rendering to task framework");
			super.renderAjaxResponse(context, component, state, isEventSource, parentElement);
		}
	}
}

⌨️ 快捷键说明

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