That's an unexpected limitation! In exceptional cases, you can revert to simpler methods; for instance, using a simple <input type="text"/> rather than a TextField component, and handling that part of the submission inside your listener method much like a traditional servlet.
As a stop-gap, you should give explicit jwcids to ALL of your components, as use shorter names ... this will buy you a lot (if you see the repetition in the generated element ids string at the root of your problem). This may be a time to use less intuitive names (i.e., use abbreviations!). On Thu, Jul 2, 2009 at 3:31 PM, Aaron Kaminsky <aar...@adaptiveplanning.com>wrote: > Hi all, > > I am having a problem with Tapestry 4.1.6. I have a form with many > (>1000) components. I get an exception trying to render the page. It > looks like the attempt in RequestCycle to call encodeIdState is hitting > a 65k length limit in ObjectOutputStream.writeUTF. Has anyone else > encountered this problem? I cannot restructure the page to reduce the > number of components, so I need another way to get around this limit. I > am thinking that I will need to override RequestCycle so I can call > ObjectOutputStream.writeObject instead of .writeUTF when the string is > long. Does anyone have a better solution? > > Exception details follow [[ > Exception class: org.apache.hivemind.ApplicationRuntimeException > Exception message: Unable to encode object > ,service$0,page$0,component$0,container$0,session$0,sp$0,layout$1,link1$ > 0,shell$0,Insert$2633,Any$9,Insert_0$12,ie6$0,body$0,OnErrorHandler$0,If > $6398,ConfirmFunctions$0,DownloadableJavaScript$5,BootstrapJavaScript$0, > homeTab$0,tabAnnouncement$1,RenderBody$728,sheetsTab$0,tabOverview$1,glo > balsTab$0,tabGlobalsOverview$1,sharedFormulasTab$0,tabSharedFormulas$1,i > mportTab$0,tabModelImport$1,exportTab$0,tabExportVersion$1,reportsTab$0, > Else$637,tabReportMenu$1,masterVersionChangeForm$0,apstate$1,apVerSel$1, > subMenuList$1,submenuItem$0,content$1,WarnOnUnsavedChan > > ... really long string truncated ... > > enu$0,APPageLink$0,Image_5$0,APPageLink_0$0,Image_6$0,APPageLink_1$0,Ima > ge_7$0,APPageLink_2$0,Image_8$0,sampleBalanceSheetReport$1,Image_9$0,sam > plePLReport$1,Image_100,addFavoriteSubmitForm$0:java.io.UTFDataFormatExc > eption. This is sometimes caused when classes being serialized to a > stream dont implement java.io.Serializable. > Stack Trace: { > null > } > Exception class: java.io.UTFDataFormatException > Exception message: null > Stack Trace: { > java.io.ObjectOutputStream$BlockDataOutputStream.writeUTF(Unknown > Source) > java.io.ObjectOutputStream$BlockDataOutputStream.writeUTF(Unknown > Source) > java.io.ObjectOutputStream.writeUTF(Unknown Source) > org.apache.tapestry.util.io.CompressedDataEncoder.encodeStringCompressed > DataEncoder.java:55 > org.apache.tapestry.engine.RequestCycle.encodeIdStateRequestCycle.java:6 > 78 > org.apache.tapestry.form.FormSupportImpl.renderFormSupportImpl.java:482 > org.apache.tapestry.form.Form.renderComponentForm.java:217 > org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724 > org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefaultRe > sponseBuilder.java:187 > org.apache.tapestry.AbstractComponent.renderBodyAbstractComponent.java:5 > 38 > org.apache.tapestry.components.RenderBody.renderComponentRenderBody.java > :39 > org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724 > org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefaultRe > sponseBuilder.java:187 > org.apache.tapestry.AbstractComponent.renderBodyAbstractComponent.java:5 > 38 > org.apache.tapestry.components.RenderBody.renderComponentRenderBody.java > :39 > org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724 > org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefaultRe > sponseBuilder.java:187 > org.apache.tapestry.AbstractComponent.renderBodyAbstractComponent.java:5 > 38 > org.apache.tapestry.html.Body.renderComponentBody.java:38 > org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724 > org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefaultRe > sponseBuilder.java:187 > org.apache.tapestry.AbstractComponent.renderBodyAbstractComponent.java:5 > 38 > org.apache.tapestry.html.Shell.renderComponentShell.java:125 > org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724 > org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefaultRe > sponseBuilder.java:187 > org.apache.tapestry.BaseComponent.renderComponentBaseComponent.java:107 > org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724 > org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefaultRe > sponseBuilder.java:187 > org.apache.tapestry.BaseComponent.renderComponentBaseComponent.java:107 > org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724 > org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefaultRe > sponseBuilder.java:187 > org.apache.tapestry.BaseComponent.renderComponentBaseComponent.java:107 > org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724 > org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefaultRe > sponseBuilder.java:185 > org.apache.tapestry.AbstractPage.renderPageAbstractPage.java:249 > org.apache.tapestry.engine.RequestCycle.renderPageRequestCycle.java:400 > org.apache.tapestry.services.impl.DefaultResponseBuilder.renderResponseD > efaultResponseBuilder.java:159 > org.apache.tapestry.services.impl.ResponseRendererImpl.renderResponseRes > ponseRendererImpl.java:33 > $ResponseRenderer_12220132922.renderResponse($ResponseRenderer_122201329 > 22.java) > org.apache.tapestry.engine.ExternalService.serviceExternalService.java:1 > 61 > $IEngineService_122201329aa.service($IEngineService_122201329aa.java) > org.apache.tapestry.services.impl.EngineServiceOuterProxy.serviceEngineS > erviceOuterProxy.java:72 > org.apache.tapestry.engine.AbstractEngine.serviceAbstractEngine.java:241 > org.apache.tapestry.services.impl.InvokeEngineTerminator.serviceInvokeEn > gineTerminator.java:54 > $WebRequestServicer_1222013297a.service($WebRequestServicer_1222013297a. > java) > com.adaptiveplanning.util.TokenizedRequestFilter.serviceTokenizedRequest > Filter.java:65 > $WebRequestServicerFilter_12220132978.service($WebRequestServicerFilter_ > 12220132978.java) > $WebRequestServicer_1222013297c.service($WebRequestServicer_1222013297c. > java) > $WebRequestServicer_12220132974.service($WebRequestServicer_12220132974. > java) > org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.servi > ceWebRequestServicerPipelineBridge.java:61 > $ServletRequestServicer_1222013295a.service($ServletRequestServicer_1222 > 013295a.java) > org.apache.tapestry.request.DecodedRequestInjector.serviceDecodedRequest > Injector.java:55 > $ServletRequestServicerFilter_12220132956.service($ServletRequestService > rFilter_12220132956.java) > $ServletRequestServicer_1222013295c.service($ServletRequestServicer_1222 > 013295c.java) > org.apache.tapestry.multipart.MultipartDecoderFilter.serviceMultipartDec > oderFilter.java:52 > $ServletRequestServicerFilter_12220132954.service($ServletRequestService > rFilter_12220132954.java) > $ServletRequestServicer_1222013295c.service($ServletRequestServicer_1222 > 013295c.java) > org.apache.tapestry.services.impl.SetupRequestEncoding.serviceSetupReque > stEncoding.java:53 > $ServletRequestServicerFilter_12220132958.service($ServletRequestService > rFilter_12220132958.java) > $ServletRequestServicer_1222013295c.service($ServletRequestServicer_1222 > 013295c.java) > $ServletRequestServicer_1222013294e.service($ServletRequestServicer_1222 > 013294e.java) > org.apache.tapestry.ApplicationServlet.doServiceApplicationServlet.java: > 126 > org.apache.tapestry.ApplicationServlet.doGetApplicationServlet.java:103 > javax.servlet.http.HttpServlet.serviceHttpServlet.java:690 > javax.servlet.http.HttpServlet.serviceHttpServlet.java:803 > org.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicat > ionFilterChain.java:290 > org.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFilte > rChain.java:206 > com.adaptiveplanning.system.ConnectionLeakDetector.doFilterConnectionLea > kDetector.java:58 > org.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicat > ionFilterChain.java:235 > org.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFilte > rChain.java:206 > com.adaptiveplanning.system.RequestMonitor$RequestHandler.performNativeP > rocessingRequestMonitor.java:197 > com.adaptiveplanning.system.RequestMonitor$ForkedRequestHandler$1.callRe > questMonitor.java:285 > com.adaptiveplanning.system.RequestMonitor$ForkedRequestHandler$1.callRe > questMonitor.java:283 > java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) > java.util.concurrent.FutureTask.run(Unknown Source) > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) > java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) > java.lang.Thread.run(Unknown Source) > } > ]] > Request parameters are [[ > ]] > > > Thanks and Regards, > Aaron Kaminsky > -- Howard M. Lewis Ship Creator of Apache Tapestry Director of Open Source Technology at Formos