📄 taskcontrolledtaskrenderer.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 + -