Hi I have just built Struts 2.0.2 snapshot based on the latest svn code (03 Dec 2006). I can see huge improvement over the 2.0.1 code in tabbedPanel handling, also the default css styles are much nicer. But here are some questions about this:
1) Does it really need to download 500+ kB of javascript and related code to display a set of empty tabs? Can it be compressed somehow? Any switches for that? 2) Why does that javascript and related code get reloaded every time? I try to enter the page with tabs again (not forcing reload with SHIFT) and all that stuff is fetched again. Can it be something with http headers? The total amount of data that is sent is really frustrating me. 3) In addition to that I could observe 16 multiple requests for GET /myApp/struts/xhtml/styles.css HTTP/1.1 to display single HTML page with 7 remote panels (test, all panels referring the same simple page with 1 test sentence - nothing more). 4) It is not written anywhere in docs - but these tabs do not work if the S2 application uses 'html' for action extension (overriding the default). Some of the resources returned by Struts for tabbedPanel also end with 'html' and the struts controller sees a problem. GET /myApp/struts/dojo/src/widget/templates/TabContainer.html HTTP/1.1 I can only see a stacktrace that such action is not defined in my app, dojo does not get such page and instead of tabs I can only see error message in the browser. After I changed the extension for my actions to something else - it started to work. But it took me 30 minutes to understand the problem. About the browser-server conversation. I could observe conversations like this (using LiveHttpHeaders): The date on my system is: 4 gru 2006 00:09:33 GMT BROWSER REQUEST: -------------------- GET /myApp/struts/dojo/src/browser_debug.js HTTP/1.1 Host: myHost.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1) Gecko/20061010 Firefox/2.0 Accept: */* Accept-Language: pl,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: UTF-8,* Keep-Alive: 300 Connection: keep-alive Cookie: JSESSIONID=EAC57FC811A25266F50DE798A102A761; __utma=220229530.66828090.1163407613.1163407613.1163410124.2; __utmz=220229530.1163407613.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none) If-Modified-Since: Pn, 4 gru 2006 00:09:33 GMT Cache-Control: max-age=0 Tomcat (5.5.20) RESPONSE ------------------------------ HTTP/1.x 200 OK Server: Apache-Coyote/1.1 Date: Mon, 04 Dec 2006 07:55:53 GMT Expires: Wt, 5 gru 2006 08:55:54 GMT Retry-After: Wt, 5 gru 2006 08:55:54 GMT Cache-Control: public Last-Modified: Pn, 4 gru 2006 00:09:33 GMT Content-Type: text/javascript Content-Length: 4861 The browser nicely asks for the content using the 'If-Modified-Since' header, but Struts simply ignores it and resends the full javascript code instead of the 'Not Modified' status. On the other side Struts allows for caching it for 24 hours. Also, the 'Date' headers contains date printed with EN locale, while other date related headers (Expires, Retry-After, Last-Modified) print date with PL locale (default for my machine). I am not sure where these differences come from. Can a check for 'If-Modified-Since' be added to the servlet that returns all the static code inside Struts2? Maybe even there could be some switch in struts.properties to specify the time between 'Date' and 'Expires' for static content? The overall experience is very positive, just these little-big annoyances ... Darek --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]