You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Leo Sakhvoruk <le...@gmail.com> on 2006/03/07 05:04:16 UTC
Rewinding nested form.
Hi everyone,
I have a page with several components each containing a form. Now when
the data inside the form is modified, say via TextField, it's never
updated because the form inside the component is never rewound. I've
tried to get a hold of the form component using the getComponents()
method but when I try casting the values I get class cast exceptions
since the classes are enhanced. Any clues as to what I can to here?
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
Re: Rewinding nested form.
Posted by Jesse Kuhnert <jk...@gmail.com>.
Are your components implementing IFormComponent I wonder? Don't remember
anything specific, but they might get their inner components ignored if not?
No idea...
On 3/7/06, Ryan Holmes <ry...@hyperstep.com> wrote:
>
> Hmmm... I'm not sure why this isn't working for you. FWIW, I can tell
> you that it *should* work.
>
> Maybe it will help if I relate a trimmed-down verion of a component from
> one of my projects that uses a form.
>
> ExampleFormComponent.jwc:
> <table border="0" cellpadding="3" cellspacing="0">
> <tr valign="middle">
> <td><form jwcid="pageSizeForm" style="margin: 0px;">
> <select jwcid="pageSizeField">
> <option>10</option>
> <option>20</option>
> <option>30</option>
> </select></form>
> </td>
> </tr>
> </table>
>
> ExampleFormComponent.jwc:
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE component-specification PUBLIC
> "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
> "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
>
> <component-specification allow-body="no"
> allow-informal-parameters="yes">
>
> <component id="pageSizeField" type="PropertySelection">
> <binding name="value" value="pageSize" />
> <binding name="model" value="pageSizeModel" />
> </component>
>
> <component id="pageSizeForm" type="Form">
> <binding name="listener" value="listener:formSubmit" />
> <binding name="focus" value="false" />
> </component>
>
> </component-specification>
>
>
> ExampleFormComponent.java:
> public abstract class ExampleFormComponent extends BaseComponent {
>
> /** List of possible page sizes. */
> private static final Integer[] PAGE_SIZES= { 10, 20, 30, 40, 50, 100,
> 200 };
>
> private IPropertySelectionModel pageSizeModel = new
> PageSizeSelectionModel(
> PAGE_SIZES );
>
>
> /**
> * Gets the current page size.
> *
> * @return page size
> */
> @Persist
> public abstract Integer getPageSize();
>
> /**
> * Sets the current page size.
> *
> * @param pageSize
> * integer length of page table
> */
> public abstract void setPageSize(Integer pageSize);
>
> /**
> * Gets the page size selection model.
> *
> * @return page size selection model
> */
> public IPropertySelectionModel getPageSizeModel() {
> return this.pageSizeModel;
> }
>
> /** Handle the page size form submission. */
> public void formSubmit() {
> // Page size property is set by Tapestry.
> }
>
> }
>
> I cut out most of the guts from the real component (a custom version of
> contrib:Table), but hopefully there's enough left to demonstrate basic
> usage of a component with a form. It looks like I don't really need the
> formSubmit() listener but I've left it in to show you what's working for
> me. Hope this helps.
>
> -Ryan
>
>
> Leo Sakhvoruk wrote:
>
> > The form is nested simply in the sense that it's inside of a component
> > and not in the main page. It is not however nested inside another
> > form. The reason I believe the rewind isn't happening is because the
> > rewindFormComponent(IMarkupWriter, IRequestCycle) method of components
> > inside the form is never called during a trace and the values that are
> > changed before the form submition are not updated.
> >
> > Ryan Holmes wrote:
> >
> >> Why do you think the rewind isn't happening and why did you refer to
> >> the forms as "nested"? I use components with their own forms and
> >> haven't had any problems, so I'm guessing that your page structure is
> >> somehow unusual (or at least different from mine). Is their any
> >> chance you actually have a form within another form (i.e. a literally
> >> nested form in your HTML)?
> >>
> >> -Ryan
> >>
> >> Leo Sakhvoruk wrote:
> >>
> >>> Hi everyone,
> >>>
> >>> I have a page with several components each containing a form. Now
> >>> when the data inside the form is modified, say via TextField, it's
> >>> never updated because the form inside the component is never
> >>> rewound. I've tried to get a hold of the form component using the
> >>> getComponents() method but when I try casting the values I get class
> >>> cast exceptions since the classes are enhanced. Any clues as to what
> >>> I can to here?
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> >>> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
> >>>
> >>>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> >> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
> >>
> >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>
>
Re: Rewinding nested form.
Posted by Ryan Holmes <ry...@hyperstep.com>.
Hmmm... I'm not sure why this isn't working for you. FWIW, I can tell
you that it *should* work.
Maybe it will help if I relate a trimmed-down verion of a component from
one of my projects that uses a form.
ExampleFormComponent.jwc:
<table border="0" cellpadding="3" cellspacing="0">
<tr valign="middle">
<td><form jwcid="pageSizeForm" style="margin: 0px;">
<select jwcid="pageSizeField">
<option>10</option>
<option>20</option>
<option>30</option>
</select></form>
</td>
</tr>
</table>
ExampleFormComponent.jwc:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE component-specification PUBLIC
"-//Apache Software Foundation//Tapestry Specification 4.0//EN"
"http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
<component-specification allow-body="no"
allow-informal-parameters="yes">
<component id="pageSizeField" type="PropertySelection">
<binding name="value" value="pageSize" />
<binding name="model" value="pageSizeModel" />
</component>
<component id="pageSizeForm" type="Form">
<binding name="listener" value="listener:formSubmit" />
<binding name="focus" value="false" />
</component>
</component-specification>
ExampleFormComponent.java:
public abstract class ExampleFormComponent extends BaseComponent {
/** List of possible page sizes. */
private static final Integer[] PAGE_SIZES= { 10, 20, 30, 40, 50, 100,
200 };
private IPropertySelectionModel pageSizeModel = new
PageSizeSelectionModel(
PAGE_SIZES );
/**
* Gets the current page size.
*
* @return page size
*/
@Persist
public abstract Integer getPageSize();
/**
* Sets the current page size.
*
* @param pageSize
* integer length of page table
*/
public abstract void setPageSize(Integer pageSize);
/**
* Gets the page size selection model.
*
* @return page size selection model
*/
public IPropertySelectionModel getPageSizeModel() {
return this.pageSizeModel;
}
/** Handle the page size form submission. */
public void formSubmit() {
// Page size property is set by Tapestry.
}
}
I cut out most of the guts from the real component (a custom version of
contrib:Table), but hopefully there's enough left to demonstrate basic
usage of a component with a form. It looks like I don't really need the
formSubmit() listener but I've left it in to show you what's working for
me. Hope this helps.
-Ryan
Leo Sakhvoruk wrote:
> The form is nested simply in the sense that it's inside of a component
> and not in the main page. It is not however nested inside another
> form. The reason I believe the rewind isn't happening is because the
> rewindFormComponent(IMarkupWriter, IRequestCycle) method of components
> inside the form is never called during a trace and the values that are
> changed before the form submition are not updated.
>
> Ryan Holmes wrote:
>
>> Why do you think the rewind isn't happening and why did you refer to
>> the forms as "nested"? I use components with their own forms and
>> haven't had any problems, so I'm guessing that your page structure is
>> somehow unusual (or at least different from mine). Is their any
>> chance you actually have a form within another form (i.e. a literally
>> nested form in your HTML)?
>>
>> -Ryan
>>
>> Leo Sakhvoruk wrote:
>>
>>> Hi everyone,
>>>
>>> I have a page with several components each containing a form. Now
>>> when the data inside the form is modified, say via TextField, it's
>>> never updated because the form inside the component is never
>>> rewound. I've tried to get a hold of the form component using the
>>> getComponents() method but when I try casting the values I get class
>>> cast exceptions since the classes are enhanced. Any clues as to what
>>> I can to here?
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
>>> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
Re: Rewinding nested form.
Posted by Leo Sakhvoruk <le...@gmail.com>.
The form is nested simply in the sense that it's inside of a component
and not in the main page. It is not however nested inside another form.
The reason I believe the rewind isn't happening is because the
rewindFormComponent(IMarkupWriter, IRequestCycle) method of components
inside the form is never called during a trace and the values that are
changed before the form submition are not updated.
Ryan Holmes wrote:
> Why do you think the rewind isn't happening and why did you refer to
> the forms as "nested"? I use components with their own forms and
> haven't had any problems, so I'm guessing that your page structure is
> somehow unusual (or at least different from mine). Is their any chance
> you actually have a form within another form (i.e. a literally nested
> form in your HTML)?
>
> -Ryan
>
> Leo Sakhvoruk wrote:
>
>> Hi everyone,
>>
>> I have a page with several components each containing a form. Now
>> when the data inside the form is modified, say via TextField, it's
>> never updated because the form inside the component is never rewound.
>> I've tried to get a hold of the form component using the
>> getComponents() method but when I try casting the values I get class
>> cast exceptions since the classes are enhanced. Any clues as to what
>> I can to here?
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
Re: Rewinding nested form.
Posted by Ryan Holmes <ry...@hyperstep.com>.
Why do you think the rewind isn't happening and why did you refer to the
forms as "nested"? I use components with their own forms and haven't had
any problems, so I'm guessing that your page structure is somehow
unusual (or at least different from mine). Is their any chance you
actually have a form within another form (i.e. a literally nested form
in your HTML)?
-Ryan
Leo Sakhvoruk wrote:
> Hi everyone,
>
> I have a page with several components each containing a form. Now when
> the data inside the form is modified, say via TextField, it's never
> updated because the form inside the component is never rewound. I've
> tried to get a hold of the form component using the getComponents()
> method but when I try casting the values I get class cast exceptions
> since the classes are enhanced. Any clues as to what I can to here?
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org