public static boolean shouldHandleRequest(WORequest request, WOContext context, String containerID) { String elementID = context.elementID(); String senderID = context.senderID(); String updateContainerID = null; if (containerID != null) { if (AjaxResponse.isAjaxUpdatePass(request)) { updateContainerID = AjaxUpdateContainer.updateContainerID(request); } } boolean shouldHandleRequest = elementID != null && (elementID.equals(senderID) || (containerID != null && containerID.equals(updateContainerID)) || elementID.equals(ERXAjaxApplication.ajaxSubmitButtonName(request))); return shouldHandleRequest; }
@Override public WOResponse handleRequest(WORequest request) { ERXAjaxApplication.enableShouldNotStorePage(); WOResponse response = super.handleRequest(request); return response; }
/** * Return whether or not the given request is an Ajax request. * * @param request the request the check * * @return if it an Ajax request the <code>true</code> */ public static boolean isAjaxRequest(WORequest request) { return ERXAjaxApplication.isAjaxRequest(request); }
/** * Execute the request, if it's coming from our action, then invoke the ajax handler and put the key * <code>AJAX_REQUEST_KEY</code> in the request userInfo dictionary (<code>request.userInfo()</code>). * * @param request the current request * @param context context of the transaction * @return the action results */ @Override public WOActionResults invokeAction(WORequest request, WOContext context) { WOActionResults result = null; if (shouldHandleRequest(request, context)) { result = handleRequest(request, context); ERXAjaxApplication.enableShouldNotStorePage(); if (ERXAjaxApplication.shouldIgnoreResults(request, context, result)) { log.warn("An Ajax request attempted to return the page, which is almost certainly an error."); result = null; } if (result == null && !ERXAjaxApplication.isAjaxReplacement(request)) { result = AjaxUtils.createResponse(request, context); } } else if (hasChildrenElements()) { result = super.invokeAction(request, context); } return result; }
/** * Execute the request, if it's coming from our action, then invoke the * ajax handler and put the key <code>AJAX_REQUEST_KEY</code> in the * request userInfo dictionary (<code>request.userInfo()</code>). * * @param request the request * @param context context of the transaction * @return a WOActionResults containing the result of the request */ @Override public WOActionResults invokeAction(WORequest request, WOContext context) { Object result; if (shouldHandleRequest(request, context)) { result = handleRequest(request, context); ERXAjaxApplication.enableShouldNotStorePage(); if (result == null && !ERXAjaxApplication.isAjaxReplacement(request)) { result = AjaxUtils.createResponse(request, context); } } else { result = super.invokeAction(request, context); } return (WOActionResults) result; }
@Override public WOActionResults invokeAction(WORequest request, WOContext context) { WOActionResults result = null; WOComponent component = context.component(); String nameInContext = nameInContext(context, component, this); boolean shouldHandleRequest = !context.wasActionInvoked() && context.wasFormSubmitted() && nameInContext.equals(ERXAjaxApplication.ajaxSubmitButtonName(request)); if (shouldHandleRequest) { String updateContainerID = AjaxUpdateContainer.updateContainerID(this, component); AjaxUpdateContainer.setUpdateContainerID(request, updateContainerID); context.setActionInvoked(true); result = (WOActionResults)valueForBinding("action", component); if (result == null) { result = handleRequest(request, context); } ERXAjaxApplication.enableShouldNotStorePage(); } else { result = invokeChildrenAction(request, context); } return result; }
@Override public WOActionResults handleRequest(WORequest request, WOContext context) { WOComponent component = context.component(); WOActionResults result = (WOActionResults) valueForBinding("action", component); if (ERXAjaxApplication.isAjaxReplacement(request)) { AjaxUtils.setPageReplacementCacheKey(context, (String)valueForBinding("replaceID", component)); } else if (result == null || booleanValueForBinding("ignoreActionResponse", false, component)) { WOResponse response = AjaxUtils.createResponse(request, context); String onClickServer = (String) valueForBinding("onClickServer", component); if (onClickServer != null) { AjaxUtils.appendScriptHeaderIfNecessary(request, response); response.appendContentString(onClickServer); AjaxUtils.appendScriptFooterIfNecessary(request, response); } result = response; } else { String updateContainerID = AjaxUpdateContainer.updateContainerID(this, component); if (updateContainerID != null) { AjaxUtils.setPageReplacementCacheKey(context, updateContainerID); } } return result; }
/** * This is called directly only for when ERXApplication is sub-classed. */ @Override public void finishInitialization() { WOApplication application = WOApplication.application(); if (!AjaxRequestHandler.useAjaxRequestHandler()) { application.registerRequestHandler(new AjaxRequestHandler(), AjaxRequestHandler.AjaxRequestHandlerKey); log.debug("AjaxRequestHandler installed"); } application.registerRequestHandler(new AjaxPushRequestHandler(), AjaxPushRequestHandler.AjaxCometRequestHandlerKey); // Register the AjaxResponseDelegate if you're using an ERXAjaxApplication ... This allows us // to fix some weird border cases caused by structural page changes. if (application instanceof ERXAjaxApplication) { ((ERXAjaxApplication)application).setResponseDelegate(new AjaxResponse.AjaxResponseDelegate()); } log.debug("Ajax loaded"); }
if (ERXAjaxApplication.isAjaxReplacement(request)) { AjaxUtils.setPageReplacementCacheKey(context, (String)valueForBinding("replaceID", component));
@Override public WOActionResults invokeAction(WORequest worequest, WOContext wocontext) { WOActionResults result = null; WOComponent wocomponent = wocontext.component(); String nameInContext = nameInContext(wocontext, wocomponent); boolean shouldHandleRequest = (!disabledInComponent(wocomponent) && wocontext.wasFormSubmitted()) && ((wocontext.isMultipleSubmitForm() && nameInContext.equals(worequest.formValueForKey(KEY_AJAX_SUBMIT_BUTTON_NAME))) || !wocontext.isMultipleSubmitForm()); if (shouldHandleRequest) { String updateContainerID = AjaxUpdateContainer.updateContainerID(this, wocomponent); AjaxUpdateContainer.setUpdateContainerID(worequest, updateContainerID); wocontext.setActionInvoked(true); result = handleRequest(worequest, wocontext); ERXAjaxApplication.enableShouldNotStorePage(); } return result; }
/** * Removes Open_ElementID_Suffix or Close_ElementID_Suffix before evaluating senderID. * * @see er.ajax.AjaxComponent#shouldHandleRequest(com.webobjects.appserver.WORequest, com.webobjects.appserver.WOContext) * * @return <code>true</code> if this request is for this component */ @Override protected boolean shouldHandleRequest(WORequest request, WOContext context) { String elementID = context.elementID(); String senderID = context.senderID(); if (senderID != null && (senderID.endsWith(Open_ElementID_Suffix) || senderID.endsWith(Close_ElementID_Suffix))) { senderID = NSPathUtilities.stringByDeletingPathExtension(senderID); } boolean shouldHandleRequest = elementID != null && (elementID.equals(senderID) || elementID.equals(ERXAjaxApplication.ajaxSubmitButtonName(request))); return shouldHandleRequest; }