You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by wo...@thomson.com on 2006/05/18 17:55:37 UTC

dynamically generated form fields and form level validation

Does someone already has a solution for this problem outlined below??

I'm using version 3.0.4

 

 

Chris Norris <CNorris <at> widen.com> writes:

> 

> I think this is what you are talking about:

> http://thread.gmane.org/gmane.comp.jakarta.tapestry.devel/1632

> 

> It seems like they were talking in January 2004 (a year and a half
ago?

> Time flies...) about putting it in the next release... But still
hasn't

> been done? I'm still trying my page property validator (it'll hold
some

> state).  That seems a little cleaner than patching Tapestry.

> -Chris 

> 

> > -----Original Message-----

> > From: robertz <at> scazdl.org [mailto:robertz <at> scazdl.org] 

> > Sent: Thursday, June 02, 2005 12:56 PM

> > To: Tapestry users

> > Subject: Re: dynamically generated form fields and form level 

> > validation

> > 

> > Harish submitted a patch a /long/ while back that dealt with 

> > the scenario

> > of how to set a particular field in error when it's rendered 

> > in a loop. He

> > added a new "index" property, as I recall. The patch was 

> > never applied,

> > but if you search the archives for it,  you should be able to find
it.

> > I also know that the patch cannot be cleanly applied to 3.0.3 due to

> > conflicting changes, so, you may just need to take the patch 

> > and use it as

> > the basis for your own modifications.

> > Will this issue be addressed in the new validation stuff Paul 

> > is working

> > on for 4.0?

> > 

> > Robert

> > 

> > > I'm going to try to boil this down to the neccesities.  If 

> > it doesn't

> > > make sense, I'll provide some code.

> > >

> > > I have a Foreach loop inside of a form.  The loop generates 

> > a couple of

> > > sets of FieldLabel/ValidField components*.

> > >

> > > The problem is that two of the fields' validation depend on 

> > each other.

> > > If both fields are empty, they both need to be marked as 

> > errored so that

> > > the error markup will be written.  If one or the other has 

> > a value, they

> > > are both valid.  Can someone point me in the best direction 

> > for this?

> > >

> > > My first thought was to record the name of the ValidField 

> > component when

> > > the page was getting the value for it.  I would get the 

> > names, something

> > > like validComponentName and validComponentName$0.  At form 

> > rewind time,

> > > though, I couldn't figure out how to get the components given
those

> > > names and set them in error.  It seems impossible, given 

> > that getName()

> > > will always return the most recent name generated for the 

> > component.  I

> > > tried going through the ValidationDelegate's FieldTrackings 

> > and going

> > > through the map returned by getComponents(), neither of which
worked

> > > very well.

> > >

> > > My next option was going to be to make a special validator for
this

> > > purpose.  It would have to be a page property rather than a 

> > bean so that

> > > the same validator would be used for both ValidFields.  All of
these

> > > approaches seem ugly to me.  Ideas?  Directions?

> > >

> > > -Chris

> > >

> > >

> > > *uses a Defer type component to take care of the off by one 

> > validation

> > > error.  the Defer component wraps a FieldLabel and takes in 

> > a block that

> > > contains a ValidField:

> > >  protected void renderComponent(IMarkupWriter writer,
IRequestCycle

> > > cycle)

> > >  {

> > >   IMarkupWriter nested = writer.getNestedWriter();

> > >   getBlock().renderBody(nested, cycle);

> > >   renderBody(writer, cycle);

> > >   nested.close();

> > >  }

> > >

> > >

> > 

> > 

> >
---------------------------------------------------------------------

> > To unsubscribe, e-mail: tapestry-user-unsubscribe <at>
jakarta.apache.org

> > For additional commands, e-mail: tapestry-user-help <at>
jakarta.apache.org

> > 

> > 

> 

> ---------------------------------------------------------------------

> To unsubscribe, e-mail: tapestry-user-unsubscribe <at>
jakarta.apache.org

> For additional commands, e-mail: tapestry-user-help <at>
jakarta.apache.org

> 

>