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: [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]