Mario, ViewStateDumper is awesome! I get a large number of "#null?"s in output but everything else is as expected. In my situation bottleneck is bandwidth; especially since ViewState is sent back to server and upload speeds are most always much slower than download speeds. Compressed ViewState by adding the following to web.xml:
<context-param> <param-name>org.apache.myfaces.COMPRESS_STATE_IN_CLIENT</param-name> <param-value>true</param-value> </context-param> This cut ViewState down by about 1/5th. Thanks again to all. I think I have good temporary solution but will look more into server side state saving. Ken On 8/23/07, Ken McArthur <[EMAIL PROTECTED]> wrote: > > Great advise, I'll try it all and update board when I figure it out. > Thanks. > > On 8/23/07, Mario Ivankovits <[EMAIL PROTECTED] > wrote: > > > > Hi! > > > With client state saving, I was under the impression that only managed > > > > > beans in session scope or used in t:saveState would be serialized into > > > the hidden javax.faces.ViewState variable. However, my application's > > > creating ViewStates in pages with very simple forms that are almost 70 > > > > > kb long! > > I've create a simple ViewState dumper which allows you to .. well ... > > dump the view state :-) ... as long as you do not compression or > > encryption. > > Just set the viewState variable to the content of the viewState in the > > HTML output. > > Maybe you can figure out what happens. > > > > Unhappily there is no information about which component added the data > > to the state, though, it might be a start anyway. > > > > > > import org.apache.commons.codec.binary.Base64 ; > > > > import java.io.ByteArrayInputStream; > > import java.io.IOException; > > import java.io.ObjectInputStream; > > import java.util.Collection; > > > > public class ViewStateDumper > > { > > public static void main(String[] args) throws IOException, > > ClassNotFoundException > > { > > String viewState=""; > > > > byte[] viewStateData = > > Base64.decodeBase64(viewState.getBytes("US-ASCII")); > > ObjectInputStream ois = new ObjectInputStream(new > > ByteArrayInputStream(viewStateData)); > > > > Object[] state = (Object[]) ois.readObject(); > > dumpState("", state); > > } > > > > private static void dumpState(String prefix, Object[] state) > > { > > for (Object object : state) > > { > > System.err.print(prefix); > > > > if (object == null) > > { > > System.err.println("#null?"); > > } > > else if (object instanceof Object[]) > > { > > System.err.println(prefix + "array"); > > dumpState(prefix + " ", (Object[]) object); > > } > > else if (object instanceof Collection) > > { > > System.err.println(prefix + "collection"); > > dumpState(prefix + " ", ((Collection) > > object).toArray()); > > } > > else > > { > > System.err.print(object.getClass().getName()); > > System.err.print(" "); > > System.err.println(object.toString ()); > > } > > } > > } > > } > > > > > > Ciao, > > Mario > > > > > > > -- > 303-619-6607 > http://adsea.com > -- 303-619-6607 http://adsea.com