You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by John Meredith <ps...@t-online.de> on 2003/08/24 11:39:24 UTC

Wierd form/block problem

Well, after a brief holiday, I've delved back into Tapestry and noticed
something weird with forms and blocks:

I have two components on a page which just contain form fields (no
inputs at this stage though): @CustomerDetailsForm,
@CustomerPreferencesForm. Both of which are contained in their
respective blocks:

<span jwcid="details@Block">
	<form jwcid="@Form" delegate="ognl:beans.delegate">
		<span jwcid="@CustomerDetailsForm" customer="ognl:customer"/>
	</form>
</span>

<span jwcid="preferences@Block">
	<form jwcid="@Form" delegate="ognl:beans.delegate">
		<span jwcid="@CustomerPreferencesForm" customer="ognl:customer"/>
	</form>
</span>

Display of the blocks is controlled by a TabPanel-like component - one
of which is always displayed.

Rather than having to repeat the "<form>" tags, I thought I'd surround
the blocks by one form only - as the listener is the same in each case
ie.

<form jwcid="@Form" delegate="ognl:beans.delegate">
	<span jwcid="details@Block">
		<span jwcid="@CustomerDetailsForm" customer="ognl:customer"/>
	</span>
	<span jwcid="preferences@Block">
		<span jwcid="@CustomerPreferencesForm" customer="ognl:customer"/>
	</span>
	<input jwcid="@Submit" listener="ognl:formSubmit"/>
</form>

Unfortunately, I get the a "This component must be contained within a
Form." Stack trace as follows:

component:
org.apache.tapestry.form.PropertySelection$Enhance_732@63a0e5[MyPreferences/$CustomerDetailsForm.detailsTitleField] location: context:/WEB-INF/CustomerDetailsForm.jwc, line 29, column 61 Stack Trace:

org.apache.tapestry.form.AbstractFormComponent.getForm(AbstractFormComponent.java:93)
org.apache.tapestry.form.PropertySelection.renderComponent(PropertySelection.java:120)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:896)
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:159)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:896)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:673)
org.apache.tapestry.components.RenderBlock.renderComponent(RenderBlock.java:113)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:896)
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:159)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:896)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:673)
org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:86)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:896)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:673)
org.apache.tapestry.html.Body.renderComponent(Body.java:304)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:896)
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:673)
tm.tapestry.components.Hull.renderComponent(Hull.java:129)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:896)
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:159)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:896)
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:159)
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:896)
org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:341)
org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:411)
org.apache.tapestry.engine.AbstractEngine.renderResponse(AbstractEngine.java:775)
org.apache.tapestry.engine.PageService.service(PageService.java:118)
org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:913)
org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:238)
org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:199)
javax.servlet.http.HttpServlet.service(HttpServlet.java:126)

"detailsTitleField" is a property-selection.

Obviously, it can't find the form ... which seems a little odd
considering the tree nature of HTML.

Anyone have an idea what I could be doing wrong/misunderstanding?

TIA,

  John

-- 
John Meredith <ps...@t-online.de>


RE: Wierd form/block problem

Posted by John Meredith <ps...@t-online.de>.
Thanks Howard. Works like a charm now.

  - John

On Sun, 2003-08-24 at 14:15, Howard M. Lewis Ship wrote:
> Make sure your InsertBlock is enclosed by the Form.  Block breaks all the rules, since it changes
> the render order significantly ... I mean, you can use Block to render a portion of a completely
> different page!
> 
> --
> Howard M. Lewis Ship
> Creator, Tapestry: Java Web Components
> http://jakarta.apache.org/tapestry
> http://jakarta.apache.org/commons/sandbox/hivemind/
> http://javatapestry.blogspot.com
> 
> > -----Original Message-----
> > From: John Meredith [mailto:psynix@t-online.de] 
> > Sent: Sunday, August 24, 2003 5:39 AM
> > To: Tapestry users
> > Subject: Wierd form/block problem
> > 
> > 
> > Well, after a brief holiday, I've delved back into Tapestry 
> > and noticed something weird with forms and blocks:
> > 
> > I have two components on a page which just contain form 
> > fields (no inputs at this stage though): 
> > @CustomerDetailsForm, @CustomerPreferencesForm. Both of which 
> > are contained in their respective blocks:
> > 
> > <span jwcid="details@Block">
> > 	<form jwcid="@Form" delegate="ognl:beans.delegate">
> > 		<span jwcid="@CustomerDetailsForm" 
> > customer="ognl:customer"/>
> > 	</form>
> > </span>
> > 
> > <span jwcid="preferences@Block">
> > 	<form jwcid="@Form" delegate="ognl:beans.delegate">
> > 		<span jwcid="@CustomerPreferencesForm" 
> > customer="ognl:customer"/>
> > 	</form>
> > </span>
> > 
> > Display of the blocks is controlled by a TabPanel-like 
> > component - one of which is always displayed.
> > 
> > Rather than having to repeat the "<form>" tags, I thought I'd 
> > surround the blocks by one form only - as the listener is the 
> > same in each case ie.
> > 
> > <form jwcid="@Form" delegate="ognl:beans.delegate">
> > 	<span jwcid="details@Block">
> > 		<span jwcid="@CustomerDetailsForm" 
> > customer="ognl:customer"/>
> > 	</span>
> > 	<span jwcid="preferences@Block">
> > 		<span jwcid="@CustomerPreferencesForm" 
> > customer="ognl:customer"/>
> > 	</span>
> > 	<input jwcid="@Submit" listener="ognl:formSubmit"/>
> > </form>
> > 
> > Unfortunately, I get the a "This component must be contained 
> > within a Form." Stack trace as follows:
> > 
> > component: 
> > org.apache.tapestry.form.PropertySelection$Enhance_732@63a0e5[
> > MyPreferences/$CustomerDetailsForm.detailsTitleField] 
> > location: context:/WEB-INF/CustomerDetailsForm.jwc, line 29, 
> > column 61 Stack Trace:
> > 
> > org.apache.tapestry.form.AbstractFormComponent.getForm(Abstrac
> > tFormComponent.java:93)
> > org.apache.tapestry.form.PropertySelection.renderComponent(Pro
> > pertySelection.java:120)
> > org.apache.tapestry.AbstractComponent.render(AbstractComponent
> > .java:896)
> > org.apache.tapestry.BaseComponent.renderComponent(BaseComponen
> > t.java:159)
> > org.apache.tapestry.AbstractComponent.render(AbstractComponent
> > .java:896)
> > org.apache.tapestry.AbstractComponent.renderBody(AbstractCompo
> > nent.java:673)
> > org.apache.tapestry.components.RenderBlock.renderComponent(Ren
> > derBlock.java:113)
> > org.apache.tapestry.AbstractComponent.render(AbstractComponent
> > .java:896)
> > org.apache.tapestry.BaseComponent.renderComponent(BaseComponen
> > t.java:159)
> > org.apache.tapestry.AbstractComponent.render(AbstractComponent
> > .java:896)
> > org.apache.tapestry.AbstractComponent.renderBody(AbstractCompo
> > nent.java:673)
> > org.apache.tapestry.components.RenderBody.renderComponent(Rend
> > erBody.java:86)
> > org.apache.tapestry.AbstractComponent.render(AbstractComponent
> > .java:896)
> > org.apache.tapestry.AbstractComponent.renderBody(AbstractCompo
> > nent.java:673)
> > org.apache.tapestry.html.Body.renderComponent(Body.java:304)
> > org.apache.tapestry.AbstractComponent.render(AbstractComponent
> > .java:896)
> > org.apache.tapestry.AbstractComponent.renderBody(AbstractCompo
> > nent.java:673)
> > tm.tapestry.components.Hull.renderComponent(Hull.java:129)
> > org.apache.tapestry.AbstractComponent.render(AbstractComponent
> > .java:896)
> > org.apache.tapestry.BaseComponent.renderComponent(BaseComponen
> > t.java:159)
> > org.apache.tapestry.AbstractComponent.render(AbstractComponent
> > .java:896)
> > org.apache.tapestry.BaseComponent.renderComponent(BaseComponen
> > t.java:159)
> > org.apache.tapestry.AbstractComponent.render(AbstractComponent
> > .java:896)
> > org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:341)
> > org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycl
> > e.java:411)
> > org.apache.tapestry.engine.AbstractEngine.renderResponse(Abstr
> > actEngine.java:775)
> > org.apache.tapestry.engine.PageService.service(PageService.java:118)
> > org.apache.tapestry.engine.AbstractEngine.service(AbstractEngi
> > ne.java:913)
> > org.apache.tapestry.ApplicationServlet.doService(ApplicationSe
> > rvlet.java:238)
> > org.apache.tapestry.ApplicationServlet.doGet(ApplicationServle
> > t.java:199)
> > javax.servlet.http.HttpServlet.service(HttpServlet.java:126)
> > 
> > "detailsTitleField" is a property-selection.
> > 
> > Obviously, it can't find the form ... which seems a little 
> > odd considering the tree nature of HTML.
> > 
> > Anyone have an idea what I could be doing wrong/misunderstanding?
> > 
> > TIA,
> > 
> >   John
> > 
> > -- 
> > John Meredith <ps...@t-online.de>
> > 
> > 
> > ---------------------------------------------------------------------
> > 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
-- 
John Meredith <ps...@t-online.de>

RE: Wierd form/block problem

Posted by "Howard M. Lewis Ship" <hl...@comcast.net>.
Make sure your InsertBlock is enclosed by the Form.  Block breaks all the rules, since it changes
the render order significantly ... I mean, you can use Block to render a portion of a completely
different page!

--
Howard M. Lewis Ship
Creator, Tapestry: Java Web Components
http://jakarta.apache.org/tapestry
http://jakarta.apache.org/commons/sandbox/hivemind/
http://javatapestry.blogspot.com

> -----Original Message-----
> From: John Meredith [mailto:psynix@t-online.de] 
> Sent: Sunday, August 24, 2003 5:39 AM
> To: Tapestry users
> Subject: Wierd form/block problem
> 
> 
> Well, after a brief holiday, I've delved back into Tapestry 
> and noticed something weird with forms and blocks:
> 
> I have two components on a page which just contain form 
> fields (no inputs at this stage though): 
> @CustomerDetailsForm, @CustomerPreferencesForm. Both of which 
> are contained in their respective blocks:
> 
> <span jwcid="details@Block">
> 	<form jwcid="@Form" delegate="ognl:beans.delegate">
> 		<span jwcid="@CustomerDetailsForm" 
> customer="ognl:customer"/>
> 	</form>
> </span>
> 
> <span jwcid="preferences@Block">
> 	<form jwcid="@Form" delegate="ognl:beans.delegate">
> 		<span jwcid="@CustomerPreferencesForm" 
> customer="ognl:customer"/>
> 	</form>
> </span>
> 
> Display of the blocks is controlled by a TabPanel-like 
> component - one of which is always displayed.
> 
> Rather than having to repeat the "<form>" tags, I thought I'd 
> surround the blocks by one form only - as the listener is the 
> same in each case ie.
> 
> <form jwcid="@Form" delegate="ognl:beans.delegate">
> 	<span jwcid="details@Block">
> 		<span jwcid="@CustomerDetailsForm" 
> customer="ognl:customer"/>
> 	</span>
> 	<span jwcid="preferences@Block">
> 		<span jwcid="@CustomerPreferencesForm" 
> customer="ognl:customer"/>
> 	</span>
> 	<input jwcid="@Submit" listener="ognl:formSubmit"/>
> </form>
> 
> Unfortunately, I get the a "This component must be contained 
> within a Form." Stack trace as follows:
> 
> component: 
> org.apache.tapestry.form.PropertySelection$Enhance_732@63a0e5[
> MyPreferences/$CustomerDetailsForm.detailsTitleField] 
> location: context:/WEB-INF/CustomerDetailsForm.jwc, line 29, 
> column 61 Stack Trace:
> 
> org.apache.tapestry.form.AbstractFormComponent.getForm(Abstrac
> tFormComponent.java:93)
> org.apache.tapestry.form.PropertySelection.renderComponent(Pro
> pertySelection.java:120)
> org.apache.tapestry.AbstractComponent.render(AbstractComponent
> .java:896)
> org.apache.tapestry.BaseComponent.renderComponent(BaseComponen
> t.java:159)
> org.apache.tapestry.AbstractComponent.render(AbstractComponent
> .java:896)
> org.apache.tapestry.AbstractComponent.renderBody(AbstractCompo
> nent.java:673)
> org.apache.tapestry.components.RenderBlock.renderComponent(Ren
> derBlock.java:113)
> org.apache.tapestry.AbstractComponent.render(AbstractComponent
> .java:896)
> org.apache.tapestry.BaseComponent.renderComponent(BaseComponen
> t.java:159)
> org.apache.tapestry.AbstractComponent.render(AbstractComponent
> .java:896)
> org.apache.tapestry.AbstractComponent.renderBody(AbstractCompo
> nent.java:673)
> org.apache.tapestry.components.RenderBody.renderComponent(Rend
> erBody.java:86)
> org.apache.tapestry.AbstractComponent.render(AbstractComponent
> .java:896)
> org.apache.tapestry.AbstractComponent.renderBody(AbstractCompo
> nent.java:673)
> org.apache.tapestry.html.Body.renderComponent(Body.java:304)
> org.apache.tapestry.AbstractComponent.render(AbstractComponent
> .java:896)
> org.apache.tapestry.AbstractComponent.renderBody(AbstractCompo
> nent.java:673)
> tm.tapestry.components.Hull.renderComponent(Hull.java:129)
> org.apache.tapestry.AbstractComponent.render(AbstractComponent
> .java:896)
> org.apache.tapestry.BaseComponent.renderComponent(BaseComponen
> t.java:159)
> org.apache.tapestry.AbstractComponent.render(AbstractComponent
> .java:896)
> org.apache.tapestry.BaseComponent.renderComponent(BaseComponen
> t.java:159)
> org.apache.tapestry.AbstractComponent.render(AbstractComponent
> .java:896)
> org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:341)
> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycl
> e.java:411)
> org.apache.tapestry.engine.AbstractEngine.renderResponse(Abstr
> actEngine.java:775)
> org.apache.tapestry.engine.PageService.service(PageService.java:118)
> org.apache.tapestry.engine.AbstractEngine.service(AbstractEngi
> ne.java:913)
> org.apache.tapestry.ApplicationServlet.doService(ApplicationSe
> rvlet.java:238)
> org.apache.tapestry.ApplicationServlet.doGet(ApplicationServle
> t.java:199)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:126)
> 
> "detailsTitleField" is a property-selection.
> 
> Obviously, it can't find the form ... which seems a little 
> odd considering the tree nature of HTML.
> 
> Anyone have an idea what I could be doing wrong/misunderstanding?
> 
> TIA,
> 
>   John
> 
> -- 
> John Meredith <ps...@t-online.de>
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>