Hi, I try to do a zone-update when adding or removing a row from an ajaxformloop component. I have :
<thead> <t:Zone t:id="zoneTitle" id="zoneTitle"> <t:If t:test="${displayFieldsTitle}"> <tr> <th>${message:fieldName}</th> <th>${message:fieldContent}</th> <th></th> </tr> </t:If> </t:Zone> </thead> <tbody> <tr t:type="AjaxFormLoop" t:id="champs" t:source="applicatifDto.ChampList" t:value="champDto" t:encoder="champDtoEncoder"> <td><t:TextField style="width:100px;" t:value="champDto.NomChamp" t:id="fieldName" /></td> <td><t:TextField style="width:600px;" t:value="champDto.ContenuChamp" t:id="fieldContent" /></td> <td><t:RemoveRowLink>${message:deleteField}</t:RemoveRowLink></td> <p:addRow> <t:addrowlink>${message:addField}</t:addrowlink> </p:addRow> </tr> </tbody> </table> And in the actions for adding and removing rows I do : // when adding a field row Object onAddRowFromChamps() { ChampDto champDto = new ChampDto(); applicatifDto.getChampList().add(champDto); if (displayFieldsTitle == false) { displayFieldsTitle = true; } ajaxResponseRenderer.addRender("zoneTitle", zoneTitle); return champDto; } // event handler on removing a field row void onRemoveRowFromChamps(ChampDto champDto) { // applicatifDto.getChampList().remove(champDto); applicatifDto.getChampList().set( applicatifDto.getChampList().indexOf(champDto), null); if (applicatifDto.getChampList().isEmpty()) { displayFieldsTitle = false; } ajaxResponseRenderer.addRender("zoneTitle", zoneTitle); } But when I launched the paged and click on "add" I got this error : An unexpected application exception has occurred. Method org.apache.tapestry5.corelib.internal.HiddenFieldPositioner.discard(HiddenFieldPositioner.java:105) may no longer be invoked. console : Caused by: java.lang.IllegalStateException: Method org.apache.tapestry5.corelib.internal.HiddenFieldPositioner.discard(HiddenFieldPositioner.java:105) may no longer be invoked. at org.apache.tapestry5.ioc.internal.util.OneShotLock.innerCheck(OneShotLock.java:58) at org.apache.tapestry5.ioc.internal.util.OneShotLock.lock(OneShotLock.java:71) at org.apache.tapestry5.corelib.internal.HiddenFieldPositioner.discard(HiddenFieldPositioner.java:105) at org.apache.tapestry5.internal.services.ajax.AjaxFormUpdateControllerImpl.cleanupAfterPartialZoneRender(AjaxFormUpdateControllerImpl.java:114) at $AjaxFormUpdateController_1204ff7889d5.cleanupAfterPartialZoneRender(Unknown Source) at $AjaxFormUpdateController_1204ff7889d1.cleanupAfterPartialZoneRender(Unknown Source) at org.apache.tapestry5.internal.services.RenderCommandComponentEventResultProcessor.renderMarkup(RenderCommandComponentEventResultProcessor.java:80) at org.apache.tapestry5.internal.services.PageRenderQueueImpl$Bridge.renderMarkup(PageRenderQueueImpl.java:62) at org.apache.tapestry5.corelib.components.AjaxFormLoop$10.renderMarkup(AjaxFormLoop.java:436) at org.apache.tapestry5.internal.services.PageRenderQueueImpl$Bridge.renderMarkup(PageRenderQueueImpl.java:62) at org.apache.tapestry5.internal.services.ajax.SingleZonePartialRendererFilter.renderMarkup(SingleZonePartialRendererFilter.java:98) at org.apache.tapestry5.internal.services.PageRenderQueueImpl$Bridge.renderMarkup(PageRenderQueueImpl.java:62) at org.apache.tapestry5.internal.services.ajax.AjaxResponseRendererImpl$3.renderMarkup(AjaxResponseRendererImpl.java:111) at org.apache.tapestry5.internal.services.PageRenderQueueImpl$Bridge.renderMarkup(PageRenderQueueImpl.java:62) at org.apache.tapestry5.internal.services.PageRenderQueueImpl.renderPartial(PageRenderQueueImpl.java:159) at $PageRenderQueue_1204ff788947.renderPartial(Unknown Source) at $PageRenderQueue_1204ff788940.renderPartial(Unknown Source) at org.apache.tapestry5.internal.services.PartialMarkupRendererTerminator.renderMarkup(PartialMarkupRendererTerminator.java:45) at org.got5.tapestry5.jquery.services.js.JSModule$2.renderMarkup(JSModule.java:58) at $PartialMarkupRenderer_1204ff7889d8.renderMarkup(Unknown Source) at org.apache.tapestry5.services.TapestryModule$37.renderMarkup(TapestryModule.java:2141) at $PartialMarkupRenderer_1204ff7889d8.renderMarkup(Unknown Source) at org.apache.tapestry5.services.TapestryModule$36.renderMarkup(TapestryModule.java:2125) at $PartialMarkupRenderer_1204ff7889d8.renderMarkup(Unknown Source) at org.apache.tapestry5.services.TapestryModule$35.renderMarkup(TapestryModule.java:2107) at $PartialMarkupRenderer_1204ff7889d8.renderMarkup(Unknown Source) at org.apache.tapestry5.services.TapestryModule$34.renderMarkup(TapestryModule.java:2091) at $PartialMarkupRenderer_1204ff7889d8.renderMarkup(Unknown Source) at org.apache.tapestry5.services.TapestryModule$33.renderMarkup(TapestryModule.java:2073) at $PartialMarkupRenderer_1204ff7889d8.renderMarkup(Unknown Source) at org.apache.tapestry5.services.TapestryModule$32.renderMarkup(TapestryModule.java:2048) at $PartialMarkupRenderer_1204ff7889d8.renderMarkup(Unknown Source) at $PartialMarkupRenderer_1204ff7889d7.renderMarkup(Unknown Source) at org.apache.tapestry5.internal.services.AjaxPartialResponseRendererImpl.renderPartialPageMarkup(AjaxPartialResponseRendererImpl.java:89) at $AjaxPartialResponseRenderer_1204ff7889d3.renderPartialPageMarkup(Unknown Source) at org.apache.tapestry5.internal.services.RenderCommandComponentEventResultProcessor.processResultValue(RenderCommandComponentEventResultProcessor.java:58) at org.apache.tapestry5.internal.services.RenderCommandComponentEventResultProcessor.processResultValue(RenderCommandComponentEventResultProcessor.java:34) at $ComponentEventResultProcessor_1204ff7889d6.processResultValue(Unknown Source) at $ComponentEventResultProcessor_1204ff7889d2.processResultValue(Unknown Source) at org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler$1.processResultValue(AjaxComponentEventRequestHandler.java:80) at org.apache.tapestry5.internal.services.ComponentResultProcessorWrapper.handleResult(ComponentResultProcessorWrapper.java:47) at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$6.handleResult(ComponentPageElementImpl.java:1089) at org.apache.tapestry5.internal.services.EventImpl$1.invoke(EventImpl.java:89) at org.apache.tapestry5.internal.services.EventImpl$1.invoke(EventImpl.java:86) at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) ... 96 more [INFO] AppModule.TimingFilter Request time: 17 ms And I don't see why it doesn't work.