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 ; 8 import java.io.IOException ; 9 10 public class JSFRIClientStateSavingPreSendHandler implements 11 PreSendHandler { 12 private static final String 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 ZONE_NAME = "stateSavingScript"; 15 16 public BufferResponseWrapper handle(HttpServletRequest ![JavaDoc](../../../../cmn/javadoc.gif) 17 request, BufferResponseWrapper responseWrapper) { 18 19 String content = responseWrapper.getBuffer(); 20 String 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 e) { 40 e.printStackTrace(); 41 } 42 43 return responseWrapper; 44 } 45 } 46 47 | Popular Tags |