So apparently the form has to be outside of the table structure. Should
this be considered a bug?

For me the tricky part her is that there are a couple of loops here so if I
surround table with the form, it tries to revert back all of the data. Is
it possible to tell the loop not to be encoded back?


On Sat, May 31, 2014 at 10:11 PM, Boris Horvat <horvat.z.bo...@gmail.com>
wrote:

> Here is the code that will trigger the issue (I needed a bit of time to
> isolate everything sorry for the delay.
>
> The fact that loop is around <td> element is what is triggering the issue
>
>       <t:zone t:id="zone">
>             <table>
>                 <tr>
>                     <td></td>
>                     <t:form t:id="form" t:zone="^">
>                         ${values}
>                         <t:loop t:source="values" t:value="value"
> t:encoder="encoder">
>                             <td>
>                                 <t:checkbox t:value="value.value" />
>                             </td>
>                         </t:loop>
>                         <t:linksubmit>
>                             refresh
>                         </t:linksubmit>
>                     </t:form>
>                 </tr>
>             </table>
>         </t:zone>
>
>     @Inject
>     private AjaxResponseRenderer ajaxResponseRenderer;
>     @InjectComponent
>     private Zone zone;
>
>      @Persist
>     @Property
>     private List<ItemSingleHolder<Boolean>> values; //ItemSingleHolder is
> a generic class that is just used to hold objects
>     @Property
>     private ItemSingleHolder<Boolean> value;
>
>     @OnEvent(value = EventConstants.SUCCESS, component = "form")
>     public void form() {
>         System.out.println(values);
>         ajaxResponseRenderer.addRender(zone);
>     }
>
>     @SetupRender
>     public void setup() {
>         values = new LinkedList<ItemSingleHolder<Boolean>>();
>         values.add(new ItemSingleHolder<Boolean>(true));
>         values.add(new ItemSingleHolder<Boolean>(true));
>         values.add(new ItemSingleHolder<Boolean>(false));
>          values.add(new ItemSingleHolder<Boolean>(true));
>     }
>
>     public ValueEncoder<ItemSingleHolder<Boolean>> getEncoder() {
>         return new ItemHolderEncoder<ItemSingleHolder<Boolean>>(values);
> // generic encoder for the holder class
>     }
>
>
>
> On Sat, May 31, 2014 at 10:09 PM, Boris Horvat <horvat.z.bo...@gmail.com>
> wrote:
>
>> Hi, thanks for the quick response
>>
>> Thiago, the entire form is already in a zone.
>>
>> I don't think that stack trace will help but here it is
>>
>> Stack trace
>>
>>    -
>>    
>> org.apache.tapestry5.corelib.components.Form.executeStoredActions(Form.java:649)
>>    -
>>    
>> org.apache.tapestry5.corelib.components.Form.advised$onAction_3a65a93609ae0(Form.java:539)
>>    - 
>> org.apache.tapestry5.corelib.components.Form$Invocation_onAction_3a65a93609adf.proceedToAdvisedMethod(Unknown
>>    Source)
>>    -
>>    
>> org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:84)
>>    -
>>    
>> org.apache.tapestry5.ioc.internal.services.LoggingAdvice.advise(LoggingAdvice.java:37)
>>    -
>>    
>> org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86)
>>    - org.apache.tapestry5.corelib.components.Form.onAction(Form.java)
>>    -
>>    
>> org.apache.tapestry5.corelib.components.Form.dispatchComponentEvent(Form.java)
>>    -
>>    
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:940)
>>    -
>>    
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1117)
>>    -
>>    
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3100(ComponentPageElementImpl.java:61)
>>    -
>>    
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1062)
>>    -
>>    
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1059)
>>    -
>>    
>> org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:146)
>>    -
>>    
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1058)
>>    -
>>    
>> org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler.handle(AjaxComponentEventRequestHandler.java:110)
>>    -
>>    
>> org.apache.tapestry5.internal.services.ajax.AjaxFormUpdateFilter.handle(AjaxFormUpdateFilter.java:56)
>>    -
>>    
>> org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42)
>>    -
>>    
>> org.apache.tapestry5.upload.internal.services.UploadExceptionFilter.handle(UploadExceptionFilter.java:75)
>>    -
>>    
>> org.apache.tapestry5.services.TapestryModule$41.handle(TapestryModule.java:2476)
>>    -
>>    
>> org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43)
>>    -
>>    
>> com.bomahabo.flow.services.security.AllowSuspendedStudioFilter.handleComponentEvent(AllowSuspendedStudioFilter.java:65)
>>    -
>>    
>> com.bomahabo.flow.services.security.RequiresProjectFilter.handleComponentEvent(RequiresProjectFilter.java:65)
>>    -
>>    
>> org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39)
>>    -
>>    
>> org.tynamo.security.SecurityComponentRequestFilter.handleComponentEvent(SecurityComponentRequestFilter.java:41)
>>    -
>>    
>> org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:46)
>>    -
>>    
>> org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:302)
>>    -
>>    
>> org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
>>    -
>>    
>> org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:902)
>>    -
>>    
>> org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:892)
>>    -
>>    
>> org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90)
>>    -
>>    
>> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:105)
>>    -
>>    
>> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:95)
>>    -
>>    
>> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
>>    -
>>    
>> org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:119)
>>    -
>>    
>> org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:253)
>>    -
>>    
>> org.got5.tapestry5.jquery.services.AjaxUploadServletRequestFilter.service(AjaxUploadServletRequestFilter.java:27)
>>    -
>>    org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
>>    -
>>    
>> org.tynamo.resteasy.ResteasyRequestFilter.service(ResteasyRequestFilter.java:100)
>>    -
>>    
>> org.tynamo.security.services.impl.SecurityConfiguration$1.call(SecurityConfiguration.java:56)
>>    -
>>    
>> org.tynamo.security.services.impl.SecurityConfiguration$1.call(SecurityConfiguration.java:54)
>>    -
>>    
>> org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
>>    -
>>    
>> org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
>>    -
>>    
>> org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:380)
>>    -
>>    
>> org.tynamo.security.services.impl.SecurityConfiguration.service(SecurityConfiguration.java:54)
>>    -
>>    
>> org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44)
>>    -
>>    
>> org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
>>    -
>>    
>> org.lazan.t5.cometd.web.ServletHttpServletRequestFilter.service(ServletHttpServletRequestFilter.java:76)
>>    -
>>    
>> org.apache.tapestry5.services.TapestryModule$1.service(TapestryModule.java:852)
>>    -
>>    org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:171)
>>
>>
>>
>> On Sat, May 31, 2014 at 9:47 PM, Kalle Korhonen <
>> kalle.o.korho...@gmail.com> wrote:
>>
>>> On Sat, May 31, 2014 at 11:55 AM, Boris Horvat <horvat.z.bo...@gmail.com
>>> >
>>> wrote:
>>>
>>> > I have form that basically displays couple of checkboxs that user can
>>> > select/deselect. Once he is made his choice he clicks a button and a
>>> form
>>> > is submited, zone is refreshed (include the form).
>>> > All of the data is nicely displayed but a second submissions throws the
>>> > error
>>> > Forms require that the request method be POST and that the t:formdata
>>> query
>>> > parameter have values.
>>> > Am I doing something wrong? Is my scenario possible?
>>> > Let me know if you need code samples
>>> >
>>>
>>> (I apologize in advance but couldn't resist...). Yes, you need to fix the
>>> error. Let me know if you need better instructions.
>>>
>>> In all seriousness, yes of course we need code samples and a bare minimum
>>> is you tell us which error you are seeing, e.g. a stack trace.
>>>
>>> Kalle
>>>
>>
>>
>>
>> --
>> Sincerely
>> *Boris Horvat*
>>
>
>
>
> --
> Sincerely
> *Boris Horvat*
>



-- 
Sincerely
*Boris Horvat*

Reply via email to