From e8c9cea578289e7b79a00c5f7adbea2abba46123 Mon Sep 17 00:00:00 2001 From: Keith Donald Date: Tue, 29 Apr 2008 05:38:43 +0000 Subject: [PATCH] polish --- .../faces/richfaces/RichFacesAjaxHandler.java | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/spring-faces/src/main/java/org/springframework/faces/richfaces/RichFacesAjaxHandler.java b/spring-faces/src/main/java/org/springframework/faces/richfaces/RichFacesAjaxHandler.java index 1c8c46cf..3e550a46 100644 --- a/spring-faces/src/main/java/org/springframework/faces/richfaces/RichFacesAjaxHandler.java +++ b/spring-faces/src/main/java/org/springframework/faces/richfaces/RichFacesAjaxHandler.java @@ -31,7 +31,7 @@ import org.springframework.js.ajax.SpringJavascriptAjaxHandler; import org.springframework.web.context.support.WebApplicationObjectSupport; /** - * Ajax handler that works with Rich Faces, allowing support for Web Flow ajax features with the Rich Faces toolkit. + * Ajax handler that works with Rich Faces, allowing support for Web Flow Ajax features with the Rich Faces toolkit. * * @author Jeremy Grelle */ @@ -40,28 +40,31 @@ public class RichFacesAjaxHandler extends WebApplicationObjectSupport { private AjaxHandler delegate = new SpringJavascriptAjaxHandler(); public boolean isAjaxRequest(HttpServletRequest request, HttpServletResponse response) { - FacesContextHelper helper = new FacesContextHelper(); - try { - if (AjaxContext.getCurrentInstance(helper.getFacesContext(getServletContext(), request, response)) - .isAjaxRequest(helper.getFacesContext(getServletContext(), request, response))) { - return true; - } else { - return delegate.isAjaxRequest(request, response); - } - } finally { - helper.cleanup(); + if (isRichFacesAjaxRequest(request, response)) { + return true; + } else { + return delegate.isAjaxRequest(request, response); } } public void sendAjaxRedirect(String targetUrl, HttpServletRequest request, HttpServletResponse response, boolean popup) throws IOException { + if (isRichFacesAjaxRequest(request, response)) { + response.sendRedirect(response.encodeRedirectURL(targetUrl)); + } else { + delegate.sendAjaxRedirect(targetUrl, request, response, popup); + } + } + + protected boolean isRichFacesAjaxRequest(HttpServletRequest request, HttpServletResponse response) { FacesContextHelper helper = new FacesContextHelper(); try { - if (AjaxContext.getCurrentInstance(helper.getFacesContext(getServletContext(), request, response)) - .isAjaxRequest(helper.getFacesContext(getServletContext(), request, response))) { - response.sendRedirect(response.encodeRedirectURL(targetUrl)); + FacesContext facesContext = helper.getFacesContext(getServletContext(), request, response); + AjaxContext context = AjaxContext.getCurrentInstance(facesContext); + if (context != null) { + return context.isAjaxRequest(facesContext); } else { - delegate.sendAjaxRedirect(targetUrl, request, response, popup); + return false; } } finally { helper.cleanup();