KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > ajaxanywhere > jsf > JSFRIClientStateSavingPreSendHandler


1 package org.ajaxanywhere.jsf;
2
3 import org.ajaxanywhere.PreSendHandler;
4 import org.ajaxanywhere.BufferResponseWrapper;
5 import org.ajaxanywhere.AAUtils;
6
7 import javax.servlet.http.HttpServletRequest JavaDoc;
8 import java.io.IOException JavaDoc;
9
10 public class JSFRIClientStateSavingPreSendHandler implements
11         PreSendHandler {
12     private static final String JavaDoc VIEW_KEY = "<input type=\"hidden\" name=\"com.sun.faces.VIEW\" id=\"com.sun.faces.VIEW\" value=\"";
13     private static final int VIEW_KEY_LEN = VIEW_KEY.length();
14     private static final String JavaDoc ZONE_NAME = "stateSavingScript";
15
16     public BufferResponseWrapper handle(HttpServletRequest JavaDoc
17             request, BufferResponseWrapper responseWrapper) {
18
19         String JavaDoc content = responseWrapper.getBuffer();
20         String JavaDoc view = null;
21         int pos1 = content.indexOf(VIEW_KEY);
22         if (pos1 != -1) {
23             int pos2 = content.indexOf('"', pos1 + VIEW_KEY_LEN);
24             if (pos2 != -1)
25                 view = content.substring(pos1 + VIEW_KEY_LEN, pos2);
26         }
27
28         try {
29
30             responseWrapper.output(AAUtils.getZoneStartDelimiter(ZONE_NAME) + "<script type=\"text/javascript\">\n" +
31                     " var views = document.getElementsByName(\"com.sun.faces.VIEW\")\n" +
32                     " if (views!=null)\n" +
33                     " for (var i=0;i<views.length;i++)\n" +
34                     " if (views[i].tagName.toLowerCase() == \"input\")\n" +
35                     " views[i].value=\"" + view + "\";" +
36
37                     "</script>" + AAUtils.getZoneEndDelimiter(ZONE_NAME));
38             AAUtils.addZonesToRefresh(request, ZONE_NAME);
39         } catch (IOException JavaDoc e) {
40             e.printStackTrace();
41         }
42
43         return responseWrapper;
44     }
45 }
46
47
Popular Tags