This commit is contained in:
Keith Donald
2008-04-29 05:38:43 +00:00
parent 9439489048
commit e8c9cea578

View File

@@ -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();