This is largely a synthetic problem.  I've since put each component in
it's own form, which works fine.  I'm still trying to figure out why
this is happening in my example app though.  I'm quite fuzzy on many
Tapestry fundamentals, and although this isn't the sort of thing
that's  likely to crop up very often, I'd really like to know why it
doesn't work the way I expected it to.

What I posted was just a simple app that demonstrated the problem. 
Add a doctype to the jwc file, and stick in a skeleton Home.page file,
and you should have exactly what I was running when I initially
posted.  There's no Java code, Conditionals, Ifs, or any other logic. 
Switching to a ListEdit required adding a property to the page file,
as the value of the ListEdit must be bound to something, but I'm not
actually doing anything with it beyond that.

I can e-mail you a ready to roll (minus libs of course) web context
root for tapestry 3 or 4 that shows what I'm talking about, if you'd 
like to take a look.  Or I could just forget about it for now.. fixing
this isn't critical, and I expect I won't have these sorts of troubles
once I know a little bit more about Tapestry.  I'm still really
curious what's going on though, if you have the time.

Thank you Jesse and Mind Bridge.  I really appreciate the help.

Scott


On 8/17/05, Jesse Kuhnert <[EMAIL PROTECTED]> wrote:
> Hmmmm....I'm having a hard time finding all the possible problems in
> my head without seeing more of what you're doing. Can you paste your
> page spec in here? And possibly the listener method on your page class
> that is synchronizing your listedit list with the component?
> 
> jesse
> On 8/17/05, Scott Wadden <[EMAIL PROTECTED]> wrote:
> > Actually, I'm getting the same behavior with the ListEdit.
> >
> > This seems to work if messageBody is a parameter rather than a regular
> > property, and I'll do that if I need to, but in this case the
> > TextArea's value isn't of interest outside the component.  Is there
> > any way to fix this without exposing the TextArea's value?
> >
> > On 8/17/05, Scott Wadden <[EMAIL PROTECTED]> wrote:
> > > You're a useful fellow Jesse  :)
> > >
> > > Now that you mention it, I specifically remember reading something
> > > like that in Tapestry in Action.  I'll try it with a ListEdit.  Thanks
> > > a lot.
> > >
> > > On 8/17/05, Jesse Kuhnert <[EMAIL PROTECTED]> wrote:
> > > > You might try using a ListEdit component instead, I think Foreach
> > > > loops aren't safe inside forms, because they don't interact with the
> > > > hidden form input fields that keep track of which components to
> > > > expect...
> > > >
> > > > jesse
> > > > On 8/17/05, Scott Wadden <[EMAIL PROTECTED]> wrote:
> > > > > Hey folks.  I'm really new to Tapestry, but it's definitely been a
> > > > > pleasure to use thus far.  I'm a fairly experienced ASP.NET developer
> > > > > who's recently converted to Java, but I felt like I was stepping back
> > > > > into the dark ages with Struts and JSP.  I find myself missing .NET
> > > > > less and less the more I use Tapestry however.
> > > > >
> > > > > Most of the stuff I've done so far has been pretty simple.  Fairly
> > > > > static forms, and a couple of read only lists.  However, I've recently
> > > > > run into problems trying to put form fields in a component that's
> > > > > contained in a Foreach loop.  Basically, all the components seem to
> > > > > given the state of the last component rendered.
> > > > >
> > > > > I've created a very simple demo that illustrates my problem.  It
> > > > > consists of a component that contains a TextArea, and a property to
> > > > > hold the TextArea's value.  My page simply outputs a bunch of these
> > > > > inside of a loop.  First the component, TestList.jwc, with the doctype
> > > > > removed:
> > > > >
> > > > > <component-specification>
> > > > >     <property-specification name="messageBody" persistent="yes"/>
> > > > >     <component id="newComp" type="TextArea">
> > > > >         <binding name="value" expression="messageBody"/>
> > > > >     </component>
> > > > > </component-specification>
> > > > >
> > > > > Now the component's template, TestList.html:
> > > > >
> > > > > <span jwcid="newComp" />
> > > > >
> > > > > And finally the page template, Home.html:
> > > > >
> > > > > <html>
> > > > >         <body>
> > > > >             <form jwcid="@Form">
> > > > >                         <div jwcid="@Foreach" source="ognl:{1, 2, 3, 
> > > > > 4, 5}">
> > > > >                                 <span jwcid="@TestList" />
> > > > >                         </div>
> > > > >                 <input type="submit" jwcid="@Submit" value="Submit 
> > > > > form" />
> > > > >             </form>
> > > > >         </body>
> > > > > </html>
> > > > >
> > > > > I tried this in 3.03 and 4.0b4 (with the appropriate changes of
> > > > > course) and get exactly the same behavior. Whatever is in the final
> > > > > text area gets put into the other 4 whenever I submit the form.  What
> > > > > do I have to do to get my component to maintain its own state in this
> > > > > sort of situation?
> > > > >
> > > > > Thank you very much,
> > > > >
> > > > > Scott
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > >
> > > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > >
> > > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to