You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Peter Beshai <pb...@hotmail.com> on 2006/10/17 22:32:26 UTC

PageRenderSupport problem (Body component is in template)

Hi,

I have created a wrapper for the dojo component Dialog and it works fine (in 
general!), but I have a problem when I use it with my form. I want to have 
the dialog appear when I submit the form (ie, the form submit button is the 
show controller) and the dialog will basically have a cancel button (close 
controller and Submit component with type cancel).

The dialog loads fine, but soon after loading it throws an exception:
Component FileUpload/uploadingDialog requires rendering support, but no 
PageRenderSupport object has been stored into the request cycle. This object 
is typically provided by a Body component. You should add a Body component 
to your template.

I do have a body component defined : <body jwcid="body@Body">.

Any ideas how to fix this problem?

FYI in my Dialog.java file I have in the renderComponent function:
PageRenderSupport pageRenderSupport = 
TapestryUtils.getPageRenderSupport(cycle, this);
getScript().execute(this, cycle, pageRenderSupport, scriptParms);


Peter Beshai

_________________________________________________________________
Essayez la nouvelle génération de recherche avec Live Search. 
http://www.live.com/?mkt=fr-ca


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: PageRenderSupport problem (Body component is in template)

Posted by Roberto Ramírez Vique <ro...@gmail.com>.
Thanks you peter !!!

finally we solved the problem just using hidden values to retrieve again
from the DB the correct object ... also need to do lot of tricks ("non
tapestry") to get also validation working inside the dojo dialog.

Anyway this is working now.

sincerely,
               robert

On 11/9/06, Peter Beshai <pb...@hotmail.com> wrote:
>
> I had the issue with the submit button not doing anything until I included
> it in the dialog box's body, but I didn't experience any other issues.
>
> There is a Dialog component in the latest 4.1.1 snapshot... maybe you
> should
> try that (if you're not using it already).
>
> Sorry, that's as much as I can say!
>
> --
> Peter Beshai - Using Tapestry 4.1.1
>
> Pure Mathematics Student
> University of Waterloo
>
>
>
>
>
> >From: "Roberto Ramírez Vique" <ro...@gmail.com>
> >Reply-To: "Tapestry users" <us...@tapestry.apache.org>
> >To: "Tapestry users" <us...@tapestry.apache.org>
> >Subject: Re: PageRenderSupport problem (Body component is in template)
> >Date: Thu, 9 Nov 2006 16:45:53 +0100
> >
> >Yes, yes ... for sure... that was an error ...
> >
> >Then you have no idea :(
> >
> >Have you had this problem with your component ?
> >
> >thanks you in advance,
> >         robert
> >
> >On 11/9/06, Peter Beshai <pb...@hotmail.com> wrote:
> >>
> >>Hi,
> >>
> >>Unless you just made a typo in the email, your loop is defined as :
> >><component id="loop" type="Form">
> >>
> >>Should probably be:
> >><component id="loop" type="For">
> >>
> >>Other than that, I have no ideas. Good luck!
> >>
> >>
> >>--
> >>Peter Beshai - Using Tapestry 4.1.1
> >>
> >>Pure Mathematics Student
> >>University of Waterloo
> >>
> >>
> >>
> >>
> >>
> >> >From: "Roberto Ramírez Vique" <ro...@gmail.com>
> >> >Reply-To: "Tapestry users" <us...@tapestry.apache.org>
> >> >To: "Tapestry users" <us...@tapestry.apache.org>
> >> >Subject: Re: PageRenderSupport problem (Body component is in template)
> >> >Date: Thu, 9 Nov 2006 12:03:57 +0100
> >> >
> >> >Hello Peter and everybody !
> >> >
> >> >I'm using tapestry 4.0, jdk 1.5 and tomcat 5.5.
> >> >
> >> >I'm doing more or less the same as all of you, but I have a question.
> >> >
> >> >My dojo dialogs are though to be places where the user can write
> >> >information
> >> >and send it back to the server: like a way to have forms that sends
> >> >information to the server. My problem now is that all these dojo
> dialogs
> >> >needs a form in the same div because otherwise the submit buttons in
> the
> >> >dojo doesn't do anything. I understand that these dojo dialogs are
> >> >rewritten
> >> >in any other place (in the DOM structure) and that's the problem why
> the
> >> >submit button doesn't work.
> >> >Well I have some of these popups working for list of elements, which
> are
> >> >modified with a dojo dialog. When I tried to save the current element
> >>(I'm
> >> >using a tag-selected of a submit button, as explained down) I always
> get
> >> >the
> >> >last element as the modified one... Any of you have had this problem
> >>with
> >> >multiple forms ? Because is a problem of having multiple forms in a
> >>page,
> >> >because just with one form it works (but i can't have just one form
> due
> >>the
> >> >dojo dialog).
> >> >
> >> >
> >> >The way I tried to select the current element is very simple (and
> works
> >> >with
> >> >a single form in a page, but not with a multiple form in a page):
> >> >HTML
> >> ><span jwcid="loop">
> >> >    <div jwcid="dojoDialog">
> >> >        <form jwcid="innerForm">
> >> >            <input type="text" jwcid="name"/>
> >> >            <input type="submit" jwcid="submitButton"/>
> >> >        </form>
> >> >    </div>
> >> ></span>
> >> >
> >> >PAGE
> >> ><component id="loop" type="Form">
> >> >    <binding name="source" value="elementList"/>
> >> >    <binding name="value" value="currentElement"/>
> >> ></component>
> >> >
> >> ><component id="personDetails" type="DojoDialogContainer"/>
> >> >
> >> ><component id="innerForm" type="Form"/>
> >> >
> >> ><component id="name" type="TextField">
> >> >    <binding name="value" value="currentElement.name"/>
> >> ></component>
> >> >
> >> ><component id="submitButton" type="Submit">
> >> >    <binding name="selected" value="selectedElement"/>
> >> >    <binding name="tag" value="currentElement"/>
> >> >    <binding name="action" value="listener:onSubmit"/>
> >> ></component>
> >> >
> >> >In the java code I get the "selectedElement" always as the last
> element
> >> >from
> >> >the elementList but always with the correct values.
> >> >
> >> >Any explanation, help, idea or something will be really appreciated,
> >> >       robert
> >> >
> >> >
> >> >
> >> >On 10/18/06, Peter Beshai <pb...@hotmail.com> wrote:
> >> >>
> >> >>Great that fixed it up :-)
> >> >>
> >> >>You said you had wrapped the Dialog component just yesterday, but I
> >>don't
> >> >>see it in the tapestry-framework trunk. Is there somewhere I can go
> and
> >> >>see
> >> >>how you implemented it?
> >> >>
> >> >>Oh I have another question... I had to put the .jwc  and .script file
> >>in
> >> >>the
> >> >>WEB-INF directory. It seems more standard to keep them in the same
> >> >>location
> >> >>as the .java file. Do I need to configure something to be able to
> store
> >> >>everything in one place?
> >> >>
> >> >>Anyway, here's the code I used, any suggestions are welcome!
> >> >>
> >> >>Dialog.java::
> >> >>import java.util.HashMap;
> >> >>import java.util.Map;
> >> >>
> >> >>import org.apache.tapestry.AbstractComponent;
> >> >>import org.apache.tapestry.IComponent;
> >> >>import org.apache.tapestry.IMarkupWriter;
> >> >>import org.apache.tapestry.IRequestCycle;
> >> >>import org.apache.tapestry.IScript;
> >> >>import org.apache.tapestry.PageRenderSupport;
> >> >>import org.apache.tapestry.TapestryUtils;
> >> >>import org.apache.tapestry.dojo.DojoUtils;
> >> >>import org.apache.tapestry.dojo.IWidget;
> >> >>import org.apache.tapestry.json.JSONObject;
> >> >>
> >> >>public abstract class Dialog extends AbstractComponent implements
> >>IWidget
> >> >>{
> >> >>     /** id. */
> >> >>     public abstract String getIdParameter();
> >> >>
> >> >>     /** component that handles closing the dialog */
> >> >>     public abstract IComponent getCloser();
> >> >>
> >> >>     /** component that handles showing the dialog */
> >> >>     public abstract IComponent getShower();
> >> >>
> >> >>     /** bgColor */
> >> >>     public abstract String getBgColor();
> >> >>
> >> >>     /** bgOpacity */
> >> >>     public abstract Double getBgOpacity();
> >> >>
> >> >>     /** toggle */
> >> >>     public abstract String getToggle();
> >> >>
> >> >>     /** toggleDuration */
> >> >>     public abstract Integer getToggleDuration();
> >> >>
> >> >>     /** Injected script. */
> >> >>     public abstract IScript getScript();
> >> >>
> >> >>     public void renderWidget(IMarkupWriter writer, IRequestCycle
> >>cycle)
> >> >>     {
> >> >>         renderComponent(writer, cycle);
> >> >>     }
> >> >>
> >> >>     @SuppressWarnings("unchecked")
> >> >>     protected void renderComponent(IMarkupWriter writer,
> IRequestCycle
> >> >>cycle)
> >> >>     {
> >> >>         if(cycle.isRewinding()) {
> >> >>             renderBody(writer, cycle);
> >> >>             return;
> >> >>         }
> >> >>         // configure the node
> >> >>         writer.begin("div");
> >> >>         writer.attribute("id", getIdParameter());
> >> >>
> >> >>         renderInformalParameters(writer, cycle);
> >> >>         renderBody(writer, cycle);
> >> >>
> >> >>         writer.end();
> >> >>
> >> >>         // configure the widget
> >> >>         JSONObject obj = DojoUtils.parseJSONParameter(this,
> >>"options");
> >> >>         obj.put("widgetId", getId());
> >> >>         obj.put("toggle", getToggle());
> >> >>         obj.put("toggleDuration", getToggleDuration());
> >> >>         obj.put("bgColor", getBgColor());
> >> >>         obj.put("bgOpacity", getBgOpacity());
> >> >>
> >> >>         // setup script includes
> >> >>         Map scriptParms = new HashMap();
> >> >>         scriptParms.put("id", getIdParameter());
> >> >>         scriptParms.put("props", obj.toString());
> >> >>         scriptParms.put("closer", getCloser().getId());
> >> >>         scriptParms.put("shower", getShower().getId());
> >> >>         PageRenderSupport pageRenderSupport =
> >> >>TapestryUtils.getPageRenderSupport(cycle, this);
> >> >>
> >> >>         getScript().execute(this, cycle, pageRenderSupport,
> >>scriptParms);
> >> >>     }
> >> >>}
> >> >>
> >> >>Dialog.script::
> >> >><?xml version="1.0"?>
> >> >><!DOCTYPE script PUBLIC
> >> >>   "-//Apache Software Foundation//Tapestry Script Specification 3.0
> >>//EN"
> >> >>   "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
> >> >><script>
> >> >><input-symbol key="id" required="yes" />
> >> >><input-symbol key="props" required="yes" />
> >> >><input-symbol key="closer" required="yes" />
> >> >><input-symbol key="shower" required="yes" />
> >> >>     <body>
> >> >>         <unique>
> >> >>             dojo.require("dojo.widget.Dialog");
> >> >>             dojo.require("tapestry.widget.Widget");
> >> >>         </unique>
> >> >>     </body>
> >> >>     <initialization>
> >> >>         tapestry.widget.synchronizeWidgetState("${id}", "dialog",
> >> >>${props});
> >> >>
> >> >>dojo.widget.byId("${id}").setCloseControl(dojo.byId("${closer}"));
> >> >>         dojo.widget.byId("${id}").setShowControl(dojo.byId
> >>("${shower}"));
> >> >>     </initialization>
> >> >></script>
> >> >>
> >> >>Dialog.jwc::
> >> >><?xml version="1.0" encoding="UTF-8"?>
> >> >><!DOCTYPE component-specification PUBLIC
> >> >>   "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
> >> >>   "http://tapestry.apache.org/dtd/Tapestry_4_0.dtd">
> >> >>
> >> >><component-specification class="com.mycom.tapestry.Dialog"
> >> >>         allow-body="yes"
> >> >>         allow-informal-parameters="yes">
> >> >>
> >> >>   <description>
> >> >>   Creates a dojo dialog widget
> >> >>   </description>
> >> >>
> >> >>   <parameter name="closer" required="yes"/>
> >> >>   <parameter name="shower" required="yes"/>
> >> >>
> >> >>   <parameter name="bgColor" default-value="literal:white" />
> >> >>   <parameter name="bgOpacity" default-value="0.5" />
> >> >>   <parameter name="toggle" default-value="literal:fade"/>
> >> >>   <parameter name="toggleDuration" default-value="250"/>
> >> >>
> >> >>   <parameter name="id" property="idParameter" default-value="id"/>
> >> >>
> >> >>   <inject property="script" type="script" object="Dialog.script"/>
> >> >>
> >> >></component-specification>
> >> >>
> >> >>
> >> >>Peter Beshai
> >> >>
> >> >> >From: "Jesse Kuhnert" <jk...@gmail.com>
> >> >> >Reply-To: "Tapestry users" <us...@tapestry.apache.org>
> >> >> >To: "Tapestry users" <us...@tapestry.apache.org>
> >> >> >Subject: Re: PageRenderSupport problem (Body component is in
> >>template)
> >> >> >Date: Wed, 18 Oct 2006 12:31:25 -0400
> >> >> >
> >> >> >Without the benefit of knowing what your component code is doing I
> am
> >> >>going
> >> >> >to guess that you are attempting to render your dialog component
> >>during
> >> >>a
> >> >> >Form "rewind" cycle.
> >> >> >
> >> >> >The best thing to do in your case is check for cycle.isRewinding()
> >>and
> >> >>skip
> >> >> >over all blocks except for renderBody() .
> >> >> >
> >> >> >On 10/18/06, Peter Beshai <pb...@hotmail.com> wrote:
> >> >> >>
> >> >> >>Sorry if this idea seems silly, but this is the first custom
> >> >> >>component/dojo
> >> >> >>widget wrapper I have made, so it basically just does the same
> thing
> >>as
> >> >> >>calling dojo.widget.byId("yourDlgId").show().
> >> >> >>
> >> >> >>My dialog takes a 'shower' and a 'closer' (IComponents) as
> required
> >> >> >>parameters -- I wasn't sure the best way to do this... but I
> thought
> >>it
> >> >> >>would allow more flexibility by doing it this way.
> >> >> >>
> >> >> >>My script looks like this: (Dialog.script)
> >> >> >>
> >> >> >><?xml version="1.0"?>
> >> >> >><!DOCTYPE script PUBLIC
> >> >> >>   "-//Apache Software Foundation//Tapestry Script Specification
> 3.0
> >> >>//EN"
> >> >> >>   "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
> >> >> >><script>
> >> >> >><input-symbol key="id" required="yes" />
> >> >> >><input-symbol key="props" required="yes" />
> >> >> >><input-symbol key="closer" required="yes" />
> >> >> >><input-symbol key="shower" required="yes" />
> >> >> >>     <body>
> >> >> >>         <unique>
> >> >> >>             dojo.require("dojo.widget.Dialog");
> >> >> >>             dojo.require("tapestry.widget.Widget");
> >> >> >>         </unique>
> >> >> >>     </body>
> >> >> >>     <initialization>
> >> >> >>         tapestry.widget.synchronizeWidgetState("${id}", "dialog",
> >> >> >>${props});
> >> >> >>
> >> >> >>dojo.widget.byId("${id}").setCloseControl(dojo.byId("${closer}"));
> >> >> >>         dojo.widget.byId("${id}").setShowControl(dojo.byId
> >> >>("${shower}"));
> >> >> >>     </initialization>
> >> >> >></script>
> >> >> >>
> >> >> >>So when I click on my shower (my form submit button) it pops up
> the
> >> >>dialog
> >> >> >>that has the closer (cancel button) and then instantaneously
> throws
> >>the
> >> >> >>exception.
> >> >> >>
> >> >> >>It took me a lot longer than 10 minutes to make this (a couple of
> >> >>hours!!)
> >> >> >>but after it was done it all seems very simple. I just couldn't
> find
> >> >>any
> >> >> >>documentation anywhere about it, so I just read through some
> source
> >>and
> >> >> >>tried putting things together.
> >> >> >>
> >> >> >>When you say "I'm assuming it's not just a simple
> >> >> >>dojo.widget.byId("yourDlgId").show()" are you implying that if it
> is
> >> >>just
> >> >> >>doing that, I ought to just use dojo directly in my template?
> >> >> >>
> >> >> >>Thanks,
> >> >> >>Peter Beshai
> >> >> >>
> >> >> >>
> >> >> >> >From: "Jesse Kuhnert" <jk...@gmail.com>
> >> >> >> >Reply-To: "Tapestry users" <us...@tapestry.apache.org>
> >> >> >> >To: "Tapestry users" <us...@tapestry.apache.org>
> >> >> >> >Subject: Re: PageRenderSupport problem (Body component is in
> >> >>template)
> >> >> >> >Date: Tue, 17 Oct 2006 22:54:39 -0400
> >> >> >> >
> >> >> >> >So what does it do after loading up? I'm assuming it's not just
> a
> >> >>simple
> >> >> >> >dojo.widget.byId("yourDlgId").show() ?
> >> >> >> >
> >> >> >> >I created the same component in 4.1.1 yesterday btw. (Took me
> all
> >>of
> >> >>ten
> >> >> >> >minutes!, of course that is expected..)
> >> >> >> >
> >> >> >> >On 10/17/06, Peter Beshai <pb...@hotmail.com> wrote:
> >> >> >> >>
> >> >> >> >>Hi,
> >> >> >> >>
> >> >> >> >>I have created a wrapper for the dojo component Dialog and it
> >>works
> >> >> >>fine
> >> >> >> >>(in
> >> >> >> >>general!), but I have a problem when I use it with my form. I
> >>want
> >> >>to
> >> >> >>have
> >> >> >> >>the dialog appear when I submit the form (ie, the form submit
> >>button
> >> >>is
> >> >> >> >>the
> >> >> >> >>show controller) and the dialog will basically have a cancel
> >>button
> >> >> >>(close
> >> >> >> >>controller and Submit component with type cancel).
> >> >> >> >>
> >> >> >> >>The dialog loads fine, but soon after loading it throws an
> >> >>exception:
> >> >> >> >>Component FileUpload/uploadingDialog requires rendering
> support,
> >>but
> >> >>no
> >> >> >> >>PageRenderSupport object has been stored into the request
> cycle.
> >> >>This
> >> >> >> >>object
> >> >> >> >>is typically provided by a Body component. You should add a
> Body
> >> >> >>component
> >> >> >> >>to your template.
> >> >> >> >>
> >> >> >> >>I do have a body component defined : <body jwcid="body@Body">.
> >> >> >> >>
> >> >> >> >>Any ideas how to fix this problem?
> >> >> >> >>
> >> >> >> >>FYI in my Dialog.java file I have in the renderComponent
> >>function:
> >> >> >> >>PageRenderSupport pageRenderSupport =
> >> >> >> >>TapestryUtils.getPageRenderSupport(cycle, this);
> >> >> >> >>getScript().execute(this, cycle, pageRenderSupport,
> scriptParms);
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>Peter Beshai
> >> >> >> >>
> >> >> >>
> >>_________________________________________________________________
> >> >> >> >>Essayez la nouvelle génération de recherche avec Live Search.
> >> >> >> >>http://www.live.com/?mkt=fr-ca
> >> >> >> >>
> >> >> >> >>
> >> >> >>
> >> >>
> >> >>---------------------------------------------------------------------
> >> >> >> >>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> >> >> >> >>For additional commands, e-mail: users-help@tapestry.apache.org
> >> >> >> >>
> >> >> >> >>
> >> >> >> >
> >> >> >> >
> >> >> >> >--
> >> >> >> >Jesse Kuhnert
> >> >> >> >Tapestry/Dojo/(and a dash of TestNG), team member/developer
> >> >> >> >
> >> >> >> >Open source based consulting work centered around
> >> >> >> >dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com
> >> >> >>
> >> >> >>_________________________________________________________________
> >> >> >>Découvrez Live Search de votre PC ou de votre appareil mobile dès
> >> >> >>aujourd'hui. http://www.live.com/?mkt=fr-ca
> >> >> >>
> >> >> >>
> >> >>
> >> >>---------------------------------------------------------------------
> >> >> >>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> >> >> >>For additional commands, e-mail: users-help@tapestry.apache.org
> >> >> >>
> >> >> >>
> >> >> >
> >> >> >
> >> >> >--
> >> >> >Jesse Kuhnert
> >> >> >Tapestry/Dojo/(and a dash of TestNG), team member/developer
> >> >> >
> >> >> >Open source based consulting work centered around
> >> >> >dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com
> >> >>
> >> >>_________________________________________________________________
> >> >>Voyez vos amis en faisant un appel vidèo dans Windows Live Messenger
> >> >>http://imagine-msn.com/messenger/launch80/default.aspx?locale=fr-ca
> >> >>
> >> >>
> >> >>---------------------------------------------------------------------
> >> >>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> >> >>For additional commands, e-mail: users-help@tapestry.apache.org
> >> >>
> >> >>
> >> >
> >> >
> >> >--
> >> >Robert Ramírez Vique
> >> >Computer Science Engineer
> >>
> >>_________________________________________________________________
> >>Achetez ce que vous voulez, quand vous voulez sur Sympatico / MSN
> >>Magasiner
> >>
> >>
> http://magasiner.sympatico.msn.ca/content/shp/?ctId=101,ptnrid=176,ptnrdata=081805
> >>
> >>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> >>For additional commands, e-mail: users-help@tapestry.apache.org
> >>
> >>
> >
> >
> >--
> >Robert Ramírez Vique
> >Computer Science Engineer
>
> _________________________________________________________________
> Voyez vos amis en faisant un appel vidèo dans Windows Live Messenger
> http://imagine-msn.com/messenger/launch80/default.aspx?locale=fr-ca
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


-- 
Robert Ramírez Vique
Computer Science Engineer

Re: PageRenderSupport problem (Body component is in template)

Posted by Peter Beshai <pb...@hotmail.com>.
I had the issue with the submit button not doing anything until I included 
it in the dialog box's body, but I didn't experience any other issues.

There is a Dialog component in the latest 4.1.1 snapshot... maybe you should 
try that (if you're not using it already).

Sorry, that's as much as I can say!

--
Peter Beshai - Using Tapestry 4.1.1

Pure Mathematics Student
University of Waterloo





>From: "Roberto Ramírez Vique" <ro...@gmail.com>
>Reply-To: "Tapestry users" <us...@tapestry.apache.org>
>To: "Tapestry users" <us...@tapestry.apache.org>
>Subject: Re: PageRenderSupport problem (Body component is in template)
>Date: Thu, 9 Nov 2006 16:45:53 +0100
>
>Yes, yes ... for sure... that was an error ...
>
>Then you have no idea :(
>
>Have you had this problem with your component ?
>
>thanks you in advance,
>         robert
>
>On 11/9/06, Peter Beshai <pb...@hotmail.com> wrote:
>>
>>Hi,
>>
>>Unless you just made a typo in the email, your loop is defined as :
>><component id="loop" type="Form">
>>
>>Should probably be:
>><component id="loop" type="For">
>>
>>Other than that, I have no ideas. Good luck!
>>
>>
>>--
>>Peter Beshai - Using Tapestry 4.1.1
>>
>>Pure Mathematics Student
>>University of Waterloo
>>
>>
>>
>>
>>
>> >From: "Roberto Ramírez Vique" <ro...@gmail.com>
>> >Reply-To: "Tapestry users" <us...@tapestry.apache.org>
>> >To: "Tapestry users" <us...@tapestry.apache.org>
>> >Subject: Re: PageRenderSupport problem (Body component is in template)
>> >Date: Thu, 9 Nov 2006 12:03:57 +0100
>> >
>> >Hello Peter and everybody !
>> >
>> >I'm using tapestry 4.0, jdk 1.5 and tomcat 5.5.
>> >
>> >I'm doing more or less the same as all of you, but I have a question.
>> >
>> >My dojo dialogs are though to be places where the user can write
>> >information
>> >and send it back to the server: like a way to have forms that sends
>> >information to the server. My problem now is that all these dojo dialogs
>> >needs a form in the same div because otherwise the submit buttons in the
>> >dojo doesn't do anything. I understand that these dojo dialogs are
>> >rewritten
>> >in any other place (in the DOM structure) and that's the problem why the
>> >submit button doesn't work.
>> >Well I have some of these popups working for list of elements, which are
>> >modified with a dojo dialog. When I tried to save the current element
>>(I'm
>> >using a tag-selected of a submit button, as explained down) I always get
>> >the
>> >last element as the modified one... Any of you have had this problem 
>>with
>> >multiple forms ? Because is a problem of having multiple forms in a 
>>page,
>> >because just with one form it works (but i can't have just one form due
>>the
>> >dojo dialog).
>> >
>> >
>> >The way I tried to select the current element is very simple (and works
>> >with
>> >a single form in a page, but not with a multiple form in a page):
>> >HTML
>> ><span jwcid="loop">
>> >    <div jwcid="dojoDialog">
>> >        <form jwcid="innerForm">
>> >            <input type="text" jwcid="name"/>
>> >            <input type="submit" jwcid="submitButton"/>
>> >        </form>
>> >    </div>
>> ></span>
>> >
>> >PAGE
>> ><component id="loop" type="Form">
>> >    <binding name="source" value="elementList"/>
>> >    <binding name="value" value="currentElement"/>
>> ></component>
>> >
>> ><component id="personDetails" type="DojoDialogContainer"/>
>> >
>> ><component id="innerForm" type="Form"/>
>> >
>> ><component id="name" type="TextField">
>> >    <binding name="value" value="currentElement.name"/>
>> ></component>
>> >
>> ><component id="submitButton" type="Submit">
>> >    <binding name="selected" value="selectedElement"/>
>> >    <binding name="tag" value="currentElement"/>
>> >    <binding name="action" value="listener:onSubmit"/>
>> ></component>
>> >
>> >In the java code I get the "selectedElement" always as the last element
>> >from
>> >the elementList but always with the correct values.
>> >
>> >Any explanation, help, idea or something will be really appreciated,
>> >       robert
>> >
>> >
>> >
>> >On 10/18/06, Peter Beshai <pb...@hotmail.com> wrote:
>> >>
>> >>Great that fixed it up :-)
>> >>
>> >>You said you had wrapped the Dialog component just yesterday, but I
>>don't
>> >>see it in the tapestry-framework trunk. Is there somewhere I can go and
>> >>see
>> >>how you implemented it?
>> >>
>> >>Oh I have another question... I had to put the .jwc  and .script file 
>>in
>> >>the
>> >>WEB-INF directory. It seems more standard to keep them in the same
>> >>location
>> >>as the .java file. Do I need to configure something to be able to store
>> >>everything in one place?
>> >>
>> >>Anyway, here's the code I used, any suggestions are welcome!
>> >>
>> >>Dialog.java::
>> >>import java.util.HashMap;
>> >>import java.util.Map;
>> >>
>> >>import org.apache.tapestry.AbstractComponent;
>> >>import org.apache.tapestry.IComponent;
>> >>import org.apache.tapestry.IMarkupWriter;
>> >>import org.apache.tapestry.IRequestCycle;
>> >>import org.apache.tapestry.IScript;
>> >>import org.apache.tapestry.PageRenderSupport;
>> >>import org.apache.tapestry.TapestryUtils;
>> >>import org.apache.tapestry.dojo.DojoUtils;
>> >>import org.apache.tapestry.dojo.IWidget;
>> >>import org.apache.tapestry.json.JSONObject;
>> >>
>> >>public abstract class Dialog extends AbstractComponent implements
>>IWidget
>> >>{
>> >>     /** id. */
>> >>     public abstract String getIdParameter();
>> >>
>> >>     /** component that handles closing the dialog */
>> >>     public abstract IComponent getCloser();
>> >>
>> >>     /** component that handles showing the dialog */
>> >>     public abstract IComponent getShower();
>> >>
>> >>     /** bgColor */
>> >>     public abstract String getBgColor();
>> >>
>> >>     /** bgOpacity */
>> >>     public abstract Double getBgOpacity();
>> >>
>> >>     /** toggle */
>> >>     public abstract String getToggle();
>> >>
>> >>     /** toggleDuration */
>> >>     public abstract Integer getToggleDuration();
>> >>
>> >>     /** Injected script. */
>> >>     public abstract IScript getScript();
>> >>
>> >>     public void renderWidget(IMarkupWriter writer, IRequestCycle 
>>cycle)
>> >>     {
>> >>         renderComponent(writer, cycle);
>> >>     }
>> >>
>> >>     @SuppressWarnings("unchecked")
>> >>     protected void renderComponent(IMarkupWriter writer, IRequestCycle
>> >>cycle)
>> >>     {
>> >>         if(cycle.isRewinding()) {
>> >>             renderBody(writer, cycle);
>> >>             return;
>> >>         }
>> >>         // configure the node
>> >>         writer.begin("div");
>> >>         writer.attribute("id", getIdParameter());
>> >>
>> >>         renderInformalParameters(writer, cycle);
>> >>         renderBody(writer, cycle);
>> >>
>> >>         writer.end();
>> >>
>> >>         // configure the widget
>> >>         JSONObject obj = DojoUtils.parseJSONParameter(this, 
>>"options");
>> >>         obj.put("widgetId", getId());
>> >>         obj.put("toggle", getToggle());
>> >>         obj.put("toggleDuration", getToggleDuration());
>> >>         obj.put("bgColor", getBgColor());
>> >>         obj.put("bgOpacity", getBgOpacity());
>> >>
>> >>         // setup script includes
>> >>         Map scriptParms = new HashMap();
>> >>         scriptParms.put("id", getIdParameter());
>> >>         scriptParms.put("props", obj.toString());
>> >>         scriptParms.put("closer", getCloser().getId());
>> >>         scriptParms.put("shower", getShower().getId());
>> >>         PageRenderSupport pageRenderSupport =
>> >>TapestryUtils.getPageRenderSupport(cycle, this);
>> >>
>> >>         getScript().execute(this, cycle, pageRenderSupport,
>>scriptParms);
>> >>     }
>> >>}
>> >>
>> >>Dialog.script::
>> >><?xml version="1.0"?>
>> >><!DOCTYPE script PUBLIC
>> >>   "-//Apache Software Foundation//Tapestry Script Specification 3.0
>>//EN"
>> >>   "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
>> >><script>
>> >><input-symbol key="id" required="yes" />
>> >><input-symbol key="props" required="yes" />
>> >><input-symbol key="closer" required="yes" />
>> >><input-symbol key="shower" required="yes" />
>> >>     <body>
>> >>         <unique>
>> >>             dojo.require("dojo.widget.Dialog");
>> >>             dojo.require("tapestry.widget.Widget");
>> >>         </unique>
>> >>     </body>
>> >>     <initialization>
>> >>         tapestry.widget.synchronizeWidgetState("${id}", "dialog",
>> >>${props});
>> >>
>> >>dojo.widget.byId("${id}").setCloseControl(dojo.byId("${closer}"));
>> >>         dojo.widget.byId("${id}").setShowControl(dojo.byId
>>("${shower}"));
>> >>     </initialization>
>> >></script>
>> >>
>> >>Dialog.jwc::
>> >><?xml version="1.0" encoding="UTF-8"?>
>> >><!DOCTYPE component-specification PUBLIC
>> >>   "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
>> >>   "http://tapestry.apache.org/dtd/Tapestry_4_0.dtd">
>> >>
>> >><component-specification class="com.mycom.tapestry.Dialog"
>> >>         allow-body="yes"
>> >>         allow-informal-parameters="yes">
>> >>
>> >>   <description>
>> >>   Creates a dojo dialog widget
>> >>   </description>
>> >>
>> >>   <parameter name="closer" required="yes"/>
>> >>   <parameter name="shower" required="yes"/>
>> >>
>> >>   <parameter name="bgColor" default-value="literal:white" />
>> >>   <parameter name="bgOpacity" default-value="0.5" />
>> >>   <parameter name="toggle" default-value="literal:fade"/>
>> >>   <parameter name="toggleDuration" default-value="250"/>
>> >>
>> >>   <parameter name="id" property="idParameter" default-value="id"/>
>> >>
>> >>   <inject property="script" type="script" object="Dialog.script"/>
>> >>
>> >></component-specification>
>> >>
>> >>
>> >>Peter Beshai
>> >>
>> >> >From: "Jesse Kuhnert" <jk...@gmail.com>
>> >> >Reply-To: "Tapestry users" <us...@tapestry.apache.org>
>> >> >To: "Tapestry users" <us...@tapestry.apache.org>
>> >> >Subject: Re: PageRenderSupport problem (Body component is in 
>>template)
>> >> >Date: Wed, 18 Oct 2006 12:31:25 -0400
>> >> >
>> >> >Without the benefit of knowing what your component code is doing I am
>> >>going
>> >> >to guess that you are attempting to render your dialog component
>>during
>> >>a
>> >> >Form "rewind" cycle.
>> >> >
>> >> >The best thing to do in your case is check for cycle.isRewinding() 
>>and
>> >>skip
>> >> >over all blocks except for renderBody() .
>> >> >
>> >> >On 10/18/06, Peter Beshai <pb...@hotmail.com> wrote:
>> >> >>
>> >> >>Sorry if this idea seems silly, but this is the first custom
>> >> >>component/dojo
>> >> >>widget wrapper I have made, so it basically just does the same thing
>>as
>> >> >>calling dojo.widget.byId("yourDlgId").show().
>> >> >>
>> >> >>My dialog takes a 'shower' and a 'closer' (IComponents) as required
>> >> >>parameters -- I wasn't sure the best way to do this... but I thought
>>it
>> >> >>would allow more flexibility by doing it this way.
>> >> >>
>> >> >>My script looks like this: (Dialog.script)
>> >> >>
>> >> >><?xml version="1.0"?>
>> >> >><!DOCTYPE script PUBLIC
>> >> >>   "-//Apache Software Foundation//Tapestry Script Specification 3.0
>> >>//EN"
>> >> >>   "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
>> >> >><script>
>> >> >><input-symbol key="id" required="yes" />
>> >> >><input-symbol key="props" required="yes" />
>> >> >><input-symbol key="closer" required="yes" />
>> >> >><input-symbol key="shower" required="yes" />
>> >> >>     <body>
>> >> >>         <unique>
>> >> >>             dojo.require("dojo.widget.Dialog");
>> >> >>             dojo.require("tapestry.widget.Widget");
>> >> >>         </unique>
>> >> >>     </body>
>> >> >>     <initialization>
>> >> >>         tapestry.widget.synchronizeWidgetState("${id}", "dialog",
>> >> >>${props});
>> >> >>
>> >> >>dojo.widget.byId("${id}").setCloseControl(dojo.byId("${closer}"));
>> >> >>         dojo.widget.byId("${id}").setShowControl(dojo.byId
>> >>("${shower}"));
>> >> >>     </initialization>
>> >> >></script>
>> >> >>
>> >> >>So when I click on my shower (my form submit button) it pops up the
>> >>dialog
>> >> >>that has the closer (cancel button) and then instantaneously throws
>>the
>> >> >>exception.
>> >> >>
>> >> >>It took me a lot longer than 10 minutes to make this (a couple of
>> >>hours!!)
>> >> >>but after it was done it all seems very simple. I just couldn't find
>> >>any
>> >> >>documentation anywhere about it, so I just read through some source
>>and
>> >> >>tried putting things together.
>> >> >>
>> >> >>When you say "I'm assuming it's not just a simple
>> >> >>dojo.widget.byId("yourDlgId").show()" are you implying that if it is
>> >>just
>> >> >>doing that, I ought to just use dojo directly in my template?
>> >> >>
>> >> >>Thanks,
>> >> >>Peter Beshai
>> >> >>
>> >> >>
>> >> >> >From: "Jesse Kuhnert" <jk...@gmail.com>
>> >> >> >Reply-To: "Tapestry users" <us...@tapestry.apache.org>
>> >> >> >To: "Tapestry users" <us...@tapestry.apache.org>
>> >> >> >Subject: Re: PageRenderSupport problem (Body component is in
>> >>template)
>> >> >> >Date: Tue, 17 Oct 2006 22:54:39 -0400
>> >> >> >
>> >> >> >So what does it do after loading up? I'm assuming it's not just a
>> >>simple
>> >> >> >dojo.widget.byId("yourDlgId").show() ?
>> >> >> >
>> >> >> >I created the same component in 4.1.1 yesterday btw. (Took me all
>>of
>> >>ten
>> >> >> >minutes!, of course that is expected..)
>> >> >> >
>> >> >> >On 10/17/06, Peter Beshai <pb...@hotmail.com> wrote:
>> >> >> >>
>> >> >> >>Hi,
>> >> >> >>
>> >> >> >>I have created a wrapper for the dojo component Dialog and it
>>works
>> >> >>fine
>> >> >> >>(in
>> >> >> >>general!), but I have a problem when I use it with my form. I 
>>want
>> >>to
>> >> >>have
>> >> >> >>the dialog appear when I submit the form (ie, the form submit
>>button
>> >>is
>> >> >> >>the
>> >> >> >>show controller) and the dialog will basically have a cancel
>>button
>> >> >>(close
>> >> >> >>controller and Submit component with type cancel).
>> >> >> >>
>> >> >> >>The dialog loads fine, but soon after loading it throws an
>> >>exception:
>> >> >> >>Component FileUpload/uploadingDialog requires rendering support,
>>but
>> >>no
>> >> >> >>PageRenderSupport object has been stored into the request cycle.
>> >>This
>> >> >> >>object
>> >> >> >>is typically provided by a Body component. You should add a Body
>> >> >>component
>> >> >> >>to your template.
>> >> >> >>
>> >> >> >>I do have a body component defined : <body jwcid="body@Body">.
>> >> >> >>
>> >> >> >>Any ideas how to fix this problem?
>> >> >> >>
>> >> >> >>FYI in my Dialog.java file I have in the renderComponent 
>>function:
>> >> >> >>PageRenderSupport pageRenderSupport =
>> >> >> >>TapestryUtils.getPageRenderSupport(cycle, this);
>> >> >> >>getScript().execute(this, cycle, pageRenderSupport, scriptParms);
>> >> >> >>
>> >> >> >>
>> >> >> >>Peter Beshai
>> >> >> >>
>> >> >> >>_________________________________________________________________
>> >> >> >>Essayez la nouvelle génération de recherche avec Live Search.
>> >> >> >>http://www.live.com/?mkt=fr-ca
>> >> >> >>
>> >> >> >>
>> >> >>
>> >> 
>> >>---------------------------------------------------------------------
>> >> >> >>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> >> >> >>For additional commands, e-mail: users-help@tapestry.apache.org
>> >> >> >>
>> >> >> >>
>> >> >> >
>> >> >> >
>> >> >> >--
>> >> >> >Jesse Kuhnert
>> >> >> >Tapestry/Dojo/(and a dash of TestNG), team member/developer
>> >> >> >
>> >> >> >Open source based consulting work centered around
>> >> >> >dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com
>> >> >>
>> >> >>_________________________________________________________________
>> >> >>Découvrez Live Search de votre PC ou de votre appareil mobile dès
>> >> >>aujourd'hui. http://www.live.com/?mkt=fr-ca
>> >> >>
>> >> >>
>> >> 
>> >>---------------------------------------------------------------------
>> >> >>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> >> >>For additional commands, e-mail: users-help@tapestry.apache.org
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >> >--
>> >> >Jesse Kuhnert
>> >> >Tapestry/Dojo/(and a dash of TestNG), team member/developer
>> >> >
>> >> >Open source based consulting work centered around
>> >> >dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com
>> >>
>> >>_________________________________________________________________
>> >>Voyez vos amis en faisant un appel vidèo dans Windows Live Messenger
>> >>http://imagine-msn.com/messenger/launch80/default.aspx?locale=fr-ca
>> >>
>> >>
>> >>---------------------------------------------------------------------
>> >>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> >>For additional commands, e-mail: users-help@tapestry.apache.org
>> >>
>> >>
>> >
>> >
>> >--
>> >Robert Ramírez Vique
>> >Computer Science Engineer
>>
>>_________________________________________________________________
>>Achetez ce que vous voulez, quand vous voulez sur Sympatico / MSN
>>Magasiner
>>
>>http://magasiner.sympatico.msn.ca/content/shp/?ctId=101,ptnrid=176,ptnrdata=081805
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>
>
>--
>Robert Ramírez Vique
>Computer Science Engineer

_________________________________________________________________
Voyez vos amis en faisant un appel vidèo dans Windows Live Messenger 
http://imagine-msn.com/messenger/launch80/default.aspx?locale=fr-ca


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: PageRenderSupport problem (Body component is in template)

Posted by Roberto Ramírez Vique <ro...@gmail.com>.
Yes, yes ... for sure... that was an error ...

Then you have no idea :(

Have you had this problem with your component ?

thanks you in advance,
         robert

On 11/9/06, Peter Beshai <pb...@hotmail.com> wrote:
>
> Hi,
>
> Unless you just made a typo in the email, your loop is defined as :
> <component id="loop" type="Form">
>
> Should probably be:
> <component id="loop" type="For">
>
> Other than that, I have no ideas. Good luck!
>
>
> --
> Peter Beshai - Using Tapestry 4.1.1
>
> Pure Mathematics Student
> University of Waterloo
>
>
>
>
>
> >From: "Roberto Ramírez Vique" <ro...@gmail.com>
> >Reply-To: "Tapestry users" <us...@tapestry.apache.org>
> >To: "Tapestry users" <us...@tapestry.apache.org>
> >Subject: Re: PageRenderSupport problem (Body component is in template)
> >Date: Thu, 9 Nov 2006 12:03:57 +0100
> >
> >Hello Peter and everybody !
> >
> >I'm using tapestry 4.0, jdk 1.5 and tomcat 5.5.
> >
> >I'm doing more or less the same as all of you, but I have a question.
> >
> >My dojo dialogs are though to be places where the user can write
> >information
> >and send it back to the server: like a way to have forms that sends
> >information to the server. My problem now is that all these dojo dialogs
> >needs a form in the same div because otherwise the submit buttons in the
> >dojo doesn't do anything. I understand that these dojo dialogs are
> >rewritten
> >in any other place (in the DOM structure) and that's the problem why the
> >submit button doesn't work.
> >Well I have some of these popups working for list of elements, which are
> >modified with a dojo dialog. When I tried to save the current element
> (I'm
> >using a tag-selected of a submit button, as explained down) I always get
> >the
> >last element as the modified one... Any of you have had this problem with
> >multiple forms ? Because is a problem of having multiple forms in a page,
> >because just with one form it works (but i can't have just one form due
> the
> >dojo dialog).
> >
> >
> >The way I tried to select the current element is very simple (and works
> >with
> >a single form in a page, but not with a multiple form in a page):
> >HTML
> ><span jwcid="loop">
> >    <div jwcid="dojoDialog">
> >        <form jwcid="innerForm">
> >            <input type="text" jwcid="name"/>
> >            <input type="submit" jwcid="submitButton"/>
> >        </form>
> >    </div>
> ></span>
> >
> >PAGE
> ><component id="loop" type="Form">
> >    <binding name="source" value="elementList"/>
> >    <binding name="value" value="currentElement"/>
> ></component>
> >
> ><component id="personDetails" type="DojoDialogContainer"/>
> >
> ><component id="innerForm" type="Form"/>
> >
> ><component id="name" type="TextField">
> >    <binding name="value" value="currentElement.name"/>
> ></component>
> >
> ><component id="submitButton" type="Submit">
> >    <binding name="selected" value="selectedElement"/>
> >    <binding name="tag" value="currentElement"/>
> >    <binding name="action" value="listener:onSubmit"/>
> ></component>
> >
> >In the java code I get the "selectedElement" always as the last element
> >from
> >the elementList but always with the correct values.
> >
> >Any explanation, help, idea or something will be really appreciated,
> >       robert
> >
> >
> >
> >On 10/18/06, Peter Beshai <pb...@hotmail.com> wrote:
> >>
> >>Great that fixed it up :-)
> >>
> >>You said you had wrapped the Dialog component just yesterday, but I
> don't
> >>see it in the tapestry-framework trunk. Is there somewhere I can go and
> >>see
> >>how you implemented it?
> >>
> >>Oh I have another question... I had to put the .jwc  and .script file in
> >>the
> >>WEB-INF directory. It seems more standard to keep them in the same
> >>location
> >>as the .java file. Do I need to configure something to be able to store
> >>everything in one place?
> >>
> >>Anyway, here's the code I used, any suggestions are welcome!
> >>
> >>Dialog.java::
> >>import java.util.HashMap;
> >>import java.util.Map;
> >>
> >>import org.apache.tapestry.AbstractComponent;
> >>import org.apache.tapestry.IComponent;
> >>import org.apache.tapestry.IMarkupWriter;
> >>import org.apache.tapestry.IRequestCycle;
> >>import org.apache.tapestry.IScript;
> >>import org.apache.tapestry.PageRenderSupport;
> >>import org.apache.tapestry.TapestryUtils;
> >>import org.apache.tapestry.dojo.DojoUtils;
> >>import org.apache.tapestry.dojo.IWidget;
> >>import org.apache.tapestry.json.JSONObject;
> >>
> >>public abstract class Dialog extends AbstractComponent implements
> IWidget
> >>{
> >>     /** id. */
> >>     public abstract String getIdParameter();
> >>
> >>     /** component that handles closing the dialog */
> >>     public abstract IComponent getCloser();
> >>
> >>     /** component that handles showing the dialog */
> >>     public abstract IComponent getShower();
> >>
> >>     /** bgColor */
> >>     public abstract String getBgColor();
> >>
> >>     /** bgOpacity */
> >>     public abstract Double getBgOpacity();
> >>
> >>     /** toggle */
> >>     public abstract String getToggle();
> >>
> >>     /** toggleDuration */
> >>     public abstract Integer getToggleDuration();
> >>
> >>     /** Injected script. */
> >>     public abstract IScript getScript();
> >>
> >>     public void renderWidget(IMarkupWriter writer, IRequestCycle cycle)
> >>     {
> >>         renderComponent(writer, cycle);
> >>     }
> >>
> >>     @SuppressWarnings("unchecked")
> >>     protected void renderComponent(IMarkupWriter writer, IRequestCycle
> >>cycle)
> >>     {
> >>         if(cycle.isRewinding()) {
> >>             renderBody(writer, cycle);
> >>             return;
> >>         }
> >>         // configure the node
> >>         writer.begin("div");
> >>         writer.attribute("id", getIdParameter());
> >>
> >>         renderInformalParameters(writer, cycle);
> >>         renderBody(writer, cycle);
> >>
> >>         writer.end();
> >>
> >>         // configure the widget
> >>         JSONObject obj = DojoUtils.parseJSONParameter(this, "options");
> >>         obj.put("widgetId", getId());
> >>         obj.put("toggle", getToggle());
> >>         obj.put("toggleDuration", getToggleDuration());
> >>         obj.put("bgColor", getBgColor());
> >>         obj.put("bgOpacity", getBgOpacity());
> >>
> >>         // setup script includes
> >>         Map scriptParms = new HashMap();
> >>         scriptParms.put("id", getIdParameter());
> >>         scriptParms.put("props", obj.toString());
> >>         scriptParms.put("closer", getCloser().getId());
> >>         scriptParms.put("shower", getShower().getId());
> >>         PageRenderSupport pageRenderSupport =
> >>TapestryUtils.getPageRenderSupport(cycle, this);
> >>
> >>         getScript().execute(this, cycle, pageRenderSupport,
> scriptParms);
> >>     }
> >>}
> >>
> >>Dialog.script::
> >><?xml version="1.0"?>
> >><!DOCTYPE script PUBLIC
> >>   "-//Apache Software Foundation//Tapestry Script Specification 3.0
> //EN"
> >>   "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
> >><script>
> >><input-symbol key="id" required="yes" />
> >><input-symbol key="props" required="yes" />
> >><input-symbol key="closer" required="yes" />
> >><input-symbol key="shower" required="yes" />
> >>     <body>
> >>         <unique>
> >>             dojo.require("dojo.widget.Dialog");
> >>             dojo.require("tapestry.widget.Widget");
> >>         </unique>
> >>     </body>
> >>     <initialization>
> >>         tapestry.widget.synchronizeWidgetState("${id}", "dialog",
> >>${props});
> >>
> >>dojo.widget.byId("${id}").setCloseControl(dojo.byId("${closer}"));
> >>         dojo.widget.byId("${id}").setShowControl(dojo.byId
> ("${shower}"));
> >>     </initialization>
> >></script>
> >>
> >>Dialog.jwc::
> >><?xml version="1.0" encoding="UTF-8"?>
> >><!DOCTYPE component-specification PUBLIC
> >>   "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
> >>   "http://tapestry.apache.org/dtd/Tapestry_4_0.dtd">
> >>
> >><component-specification class="com.mycom.tapestry.Dialog"
> >>         allow-body="yes"
> >>         allow-informal-parameters="yes">
> >>
> >>   <description>
> >>   Creates a dojo dialog widget
> >>   </description>
> >>
> >>   <parameter name="closer" required="yes"/>
> >>   <parameter name="shower" required="yes"/>
> >>
> >>   <parameter name="bgColor" default-value="literal:white" />
> >>   <parameter name="bgOpacity" default-value="0.5" />
> >>   <parameter name="toggle" default-value="literal:fade"/>
> >>   <parameter name="toggleDuration" default-value="250"/>
> >>
> >>   <parameter name="id" property="idParameter" default-value="id"/>
> >>
> >>   <inject property="script" type="script" object="Dialog.script"/>
> >>
> >></component-specification>
> >>
> >>
> >>Peter Beshai
> >>
> >> >From: "Jesse Kuhnert" <jk...@gmail.com>
> >> >Reply-To: "Tapestry users" <us...@tapestry.apache.org>
> >> >To: "Tapestry users" <us...@tapestry.apache.org>
> >> >Subject: Re: PageRenderSupport problem (Body component is in template)
> >> >Date: Wed, 18 Oct 2006 12:31:25 -0400
> >> >
> >> >Without the benefit of knowing what your component code is doing I am
> >>going
> >> >to guess that you are attempting to render your dialog component
> during
> >>a
> >> >Form "rewind" cycle.
> >> >
> >> >The best thing to do in your case is check for cycle.isRewinding() and
> >>skip
> >> >over all blocks except for renderBody() .
> >> >
> >> >On 10/18/06, Peter Beshai <pb...@hotmail.com> wrote:
> >> >>
> >> >>Sorry if this idea seems silly, but this is the first custom
> >> >>component/dojo
> >> >>widget wrapper I have made, so it basically just does the same thing
> as
> >> >>calling dojo.widget.byId("yourDlgId").show().
> >> >>
> >> >>My dialog takes a 'shower' and a 'closer' (IComponents) as required
> >> >>parameters -- I wasn't sure the best way to do this... but I thought
> it
> >> >>would allow more flexibility by doing it this way.
> >> >>
> >> >>My script looks like this: (Dialog.script)
> >> >>
> >> >><?xml version="1.0"?>
> >> >><!DOCTYPE script PUBLIC
> >> >>   "-//Apache Software Foundation//Tapestry Script Specification 3.0
> >>//EN"
> >> >>   "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
> >> >><script>
> >> >><input-symbol key="id" required="yes" />
> >> >><input-symbol key="props" required="yes" />
> >> >><input-symbol key="closer" required="yes" />
> >> >><input-symbol key="shower" required="yes" />
> >> >>     <body>
> >> >>         <unique>
> >> >>             dojo.require("dojo.widget.Dialog");
> >> >>             dojo.require("tapestry.widget.Widget");
> >> >>         </unique>
> >> >>     </body>
> >> >>     <initialization>
> >> >>         tapestry.widget.synchronizeWidgetState("${id}", "dialog",
> >> >>${props});
> >> >>
> >> >>dojo.widget.byId("${id}").setCloseControl(dojo.byId("${closer}"));
> >> >>         dojo.widget.byId("${id}").setShowControl(dojo.byId
> >>("${shower}"));
> >> >>     </initialization>
> >> >></script>
> >> >>
> >> >>So when I click on my shower (my form submit button) it pops up the
> >>dialog
> >> >>that has the closer (cancel button) and then instantaneously throws
> the
> >> >>exception.
> >> >>
> >> >>It took me a lot longer than 10 minutes to make this (a couple of
> >>hours!!)
> >> >>but after it was done it all seems very simple. I just couldn't find
> >>any
> >> >>documentation anywhere about it, so I just read through some source
> and
> >> >>tried putting things together.
> >> >>
> >> >>When you say "I'm assuming it's not just a simple
> >> >>dojo.widget.byId("yourDlgId").show()" are you implying that if it is
> >>just
> >> >>doing that, I ought to just use dojo directly in my template?
> >> >>
> >> >>Thanks,
> >> >>Peter Beshai
> >> >>
> >> >>
> >> >> >From: "Jesse Kuhnert" <jk...@gmail.com>
> >> >> >Reply-To: "Tapestry users" <us...@tapestry.apache.org>
> >> >> >To: "Tapestry users" <us...@tapestry.apache.org>
> >> >> >Subject: Re: PageRenderSupport problem (Body component is in
> >>template)
> >> >> >Date: Tue, 17 Oct 2006 22:54:39 -0400
> >> >> >
> >> >> >So what does it do after loading up? I'm assuming it's not just a
> >>simple
> >> >> >dojo.widget.byId("yourDlgId").show() ?
> >> >> >
> >> >> >I created the same component in 4.1.1 yesterday btw. (Took me all
> of
> >>ten
> >> >> >minutes!, of course that is expected..)
> >> >> >
> >> >> >On 10/17/06, Peter Beshai <pb...@hotmail.com> wrote:
> >> >> >>
> >> >> >>Hi,
> >> >> >>
> >> >> >>I have created a wrapper for the dojo component Dialog and it
> works
> >> >>fine
> >> >> >>(in
> >> >> >>general!), but I have a problem when I use it with my form. I want
> >>to
> >> >>have
> >> >> >>the dialog appear when I submit the form (ie, the form submit
> button
> >>is
> >> >> >>the
> >> >> >>show controller) and the dialog will basically have a cancel
> button
> >> >>(close
> >> >> >>controller and Submit component with type cancel).
> >> >> >>
> >> >> >>The dialog loads fine, but soon after loading it throws an
> >>exception:
> >> >> >>Component FileUpload/uploadingDialog requires rendering support,
> but
> >>no
> >> >> >>PageRenderSupport object has been stored into the request cycle.
> >>This
> >> >> >>object
> >> >> >>is typically provided by a Body component. You should add a Body
> >> >>component
> >> >> >>to your template.
> >> >> >>
> >> >> >>I do have a body component defined : <body jwcid="body@Body">.
> >> >> >>
> >> >> >>Any ideas how to fix this problem?
> >> >> >>
> >> >> >>FYI in my Dialog.java file I have in the renderComponent function:
> >> >> >>PageRenderSupport pageRenderSupport =
> >> >> >>TapestryUtils.getPageRenderSupport(cycle, this);
> >> >> >>getScript().execute(this, cycle, pageRenderSupport, scriptParms);
> >> >> >>
> >> >> >>
> >> >> >>Peter Beshai
> >> >> >>
> >> >> >>_________________________________________________________________
> >> >> >>Essayez la nouvelle génération de recherche avec Live Search.
> >> >> >>http://www.live.com/?mkt=fr-ca
> >> >> >>
> >> >> >>
> >> >>
> >> >>---------------------------------------------------------------------
> >> >> >>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> >> >> >>For additional commands, e-mail: users-help@tapestry.apache.org
> >> >> >>
> >> >> >>
> >> >> >
> >> >> >
> >> >> >--
> >> >> >Jesse Kuhnert
> >> >> >Tapestry/Dojo/(and a dash of TestNG), team member/developer
> >> >> >
> >> >> >Open source based consulting work centered around
> >> >> >dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com
> >> >>
> >> >>_________________________________________________________________
> >> >>Découvrez Live Search de votre PC ou de votre appareil mobile dès
> >> >>aujourd'hui. http://www.live.com/?mkt=fr-ca
> >> >>
> >> >>
> >> >>---------------------------------------------------------------------
> >> >>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> >> >>For additional commands, e-mail: users-help@tapestry.apache.org
> >> >>
> >> >>
> >> >
> >> >
> >> >--
> >> >Jesse Kuhnert
> >> >Tapestry/Dojo/(and a dash of TestNG), team member/developer
> >> >
> >> >Open source based consulting work centered around
> >> >dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com
> >>
> >>_________________________________________________________________
> >>Voyez vos amis en faisant un appel vidèo dans Windows Live Messenger
> >>http://imagine-msn.com/messenger/launch80/default.aspx?locale=fr-ca
> >>
> >>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> >>For additional commands, e-mail: users-help@tapestry.apache.org
> >>
> >>
> >
> >
> >--
> >Robert Ramírez Vique
> >Computer Science Engineer
>
> _________________________________________________________________
> Achetez ce que vous voulez, quand vous voulez sur Sympatico / MSN
> Magasiner
>
> http://magasiner.sympatico.msn.ca/content/shp/?ctId=101,ptnrid=176,ptnrdata=081805
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


-- 
Robert Ramírez Vique
Computer Science Engineer

Re: PageRenderSupport problem (Body component is in template)

Posted by Peter Beshai <pb...@hotmail.com>.
Hi,

Unless you just made a typo in the email, your loop is defined as :
<component id="loop" type="Form">

Should probably be:
<component id="loop" type="For">

Other than that, I have no ideas. Good luck!


--
Peter Beshai - Using Tapestry 4.1.1

Pure Mathematics Student
University of Waterloo





>From: "Roberto Ramírez Vique" <ro...@gmail.com>
>Reply-To: "Tapestry users" <us...@tapestry.apache.org>
>To: "Tapestry users" <us...@tapestry.apache.org>
>Subject: Re: PageRenderSupport problem (Body component is in template)
>Date: Thu, 9 Nov 2006 12:03:57 +0100
>
>Hello Peter and everybody !
>
>I'm using tapestry 4.0, jdk 1.5 and tomcat 5.5.
>
>I'm doing more or less the same as all of you, but I have a question.
>
>My dojo dialogs are though to be places where the user can write 
>information
>and send it back to the server: like a way to have forms that sends
>information to the server. My problem now is that all these dojo dialogs
>needs a form in the same div because otherwise the submit buttons in the
>dojo doesn't do anything. I understand that these dojo dialogs are 
>rewritten
>in any other place (in the DOM structure) and that's the problem why the
>submit button doesn't work.
>Well I have some of these popups working for list of elements, which are
>modified with a dojo dialog. When I tried to save the current element (I'm
>using a tag-selected of a submit button, as explained down) I always get 
>the
>last element as the modified one... Any of you have had this problem with
>multiple forms ? Because is a problem of having multiple forms in a page,
>because just with one form it works (but i can't have just one form due the
>dojo dialog).
>
>
>The way I tried to select the current element is very simple (and works 
>with
>a single form in a page, but not with a multiple form in a page):
>HTML
><span jwcid="loop">
>    <div jwcid="dojoDialog">
>        <form jwcid="innerForm">
>            <input type="text" jwcid="name"/>
>            <input type="submit" jwcid="submitButton"/>
>        </form>
>    </div>
></span>
>
>PAGE
><component id="loop" type="Form">
>    <binding name="source" value="elementList"/>
>    <binding name="value" value="currentElement"/>
></component>
>
><component id="personDetails" type="DojoDialogContainer"/>
>
><component id="innerForm" type="Form"/>
>
><component id="name" type="TextField">
>    <binding name="value" value="currentElement.name"/>
></component>
>
><component id="submitButton" type="Submit">
>    <binding name="selected" value="selectedElement"/>
>    <binding name="tag" value="currentElement"/>
>    <binding name="action" value="listener:onSubmit"/>
></component>
>
>In the java code I get the "selectedElement" always as the last element 
>from
>the elementList but always with the correct values.
>
>Any explanation, help, idea or something will be really appreciated,
>       robert
>
>
>
>On 10/18/06, Peter Beshai <pb...@hotmail.com> wrote:
>>
>>Great that fixed it up :-)
>>
>>You said you had wrapped the Dialog component just yesterday, but I don't
>>see it in the tapestry-framework trunk. Is there somewhere I can go and
>>see
>>how you implemented it?
>>
>>Oh I have another question... I had to put the .jwc  and .script file in
>>the
>>WEB-INF directory. It seems more standard to keep them in the same
>>location
>>as the .java file. Do I need to configure something to be able to store
>>everything in one place?
>>
>>Anyway, here's the code I used, any suggestions are welcome!
>>
>>Dialog.java::
>>import java.util.HashMap;
>>import java.util.Map;
>>
>>import org.apache.tapestry.AbstractComponent;
>>import org.apache.tapestry.IComponent;
>>import org.apache.tapestry.IMarkupWriter;
>>import org.apache.tapestry.IRequestCycle;
>>import org.apache.tapestry.IScript;
>>import org.apache.tapestry.PageRenderSupport;
>>import org.apache.tapestry.TapestryUtils;
>>import org.apache.tapestry.dojo.DojoUtils;
>>import org.apache.tapestry.dojo.IWidget;
>>import org.apache.tapestry.json.JSONObject;
>>
>>public abstract class Dialog extends AbstractComponent implements IWidget
>>{
>>     /** id. */
>>     public abstract String getIdParameter();
>>
>>     /** component that handles closing the dialog */
>>     public abstract IComponent getCloser();
>>
>>     /** component that handles showing the dialog */
>>     public abstract IComponent getShower();
>>
>>     /** bgColor */
>>     public abstract String getBgColor();
>>
>>     /** bgOpacity */
>>     public abstract Double getBgOpacity();
>>
>>     /** toggle */
>>     public abstract String getToggle();
>>
>>     /** toggleDuration */
>>     public abstract Integer getToggleDuration();
>>
>>     /** Injected script. */
>>     public abstract IScript getScript();
>>
>>     public void renderWidget(IMarkupWriter writer, IRequestCycle cycle)
>>     {
>>         renderComponent(writer, cycle);
>>     }
>>
>>     @SuppressWarnings("unchecked")
>>     protected void renderComponent(IMarkupWriter writer, IRequestCycle
>>cycle)
>>     {
>>         if(cycle.isRewinding()) {
>>             renderBody(writer, cycle);
>>             return;
>>         }
>>         // configure the node
>>         writer.begin("div");
>>         writer.attribute("id", getIdParameter());
>>
>>         renderInformalParameters(writer, cycle);
>>         renderBody(writer, cycle);
>>
>>         writer.end();
>>
>>         // configure the widget
>>         JSONObject obj = DojoUtils.parseJSONParameter(this, "options");
>>         obj.put("widgetId", getId());
>>         obj.put("toggle", getToggle());
>>         obj.put("toggleDuration", getToggleDuration());
>>         obj.put("bgColor", getBgColor());
>>         obj.put("bgOpacity", getBgOpacity());
>>
>>         // setup script includes
>>         Map scriptParms = new HashMap();
>>         scriptParms.put("id", getIdParameter());
>>         scriptParms.put("props", obj.toString());
>>         scriptParms.put("closer", getCloser().getId());
>>         scriptParms.put("shower", getShower().getId());
>>         PageRenderSupport pageRenderSupport =
>>TapestryUtils.getPageRenderSupport(cycle, this);
>>
>>         getScript().execute(this, cycle, pageRenderSupport, scriptParms);
>>     }
>>}
>>
>>Dialog.script::
>><?xml version="1.0"?>
>><!DOCTYPE script PUBLIC
>>   "-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
>>   "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
>><script>
>><input-symbol key="id" required="yes" />
>><input-symbol key="props" required="yes" />
>><input-symbol key="closer" required="yes" />
>><input-symbol key="shower" required="yes" />
>>     <body>
>>         <unique>
>>             dojo.require("dojo.widget.Dialog");
>>             dojo.require("tapestry.widget.Widget");
>>         </unique>
>>     </body>
>>     <initialization>
>>         tapestry.widget.synchronizeWidgetState("${id}", "dialog",
>>${props});
>>         
>>dojo.widget.byId("${id}").setCloseControl(dojo.byId("${closer}"));
>>         dojo.widget.byId("${id}").setShowControl(dojo.byId("${shower}"));
>>     </initialization>
>></script>
>>
>>Dialog.jwc::
>><?xml version="1.0" encoding="UTF-8"?>
>><!DOCTYPE component-specification PUBLIC
>>   "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
>>   "http://tapestry.apache.org/dtd/Tapestry_4_0.dtd">
>>
>><component-specification class="com.mycom.tapestry.Dialog"
>>         allow-body="yes"
>>         allow-informal-parameters="yes">
>>
>>   <description>
>>   Creates a dojo dialog widget
>>   </description>
>>
>>   <parameter name="closer" required="yes"/>
>>   <parameter name="shower" required="yes"/>
>>
>>   <parameter name="bgColor" default-value="literal:white" />
>>   <parameter name="bgOpacity" default-value="0.5" />
>>   <parameter name="toggle" default-value="literal:fade"/>
>>   <parameter name="toggleDuration" default-value="250"/>
>>
>>   <parameter name="id" property="idParameter" default-value="id"/>
>>
>>   <inject property="script" type="script" object="Dialog.script"/>
>>
>></component-specification>
>>
>>
>>Peter Beshai
>>
>> >From: "Jesse Kuhnert" <jk...@gmail.com>
>> >Reply-To: "Tapestry users" <us...@tapestry.apache.org>
>> >To: "Tapestry users" <us...@tapestry.apache.org>
>> >Subject: Re: PageRenderSupport problem (Body component is in template)
>> >Date: Wed, 18 Oct 2006 12:31:25 -0400
>> >
>> >Without the benefit of knowing what your component code is doing I am
>>going
>> >to guess that you are attempting to render your dialog component during 
>>a
>> >Form "rewind" cycle.
>> >
>> >The best thing to do in your case is check for cycle.isRewinding() and
>>skip
>> >over all blocks except for renderBody() .
>> >
>> >On 10/18/06, Peter Beshai <pb...@hotmail.com> wrote:
>> >>
>> >>Sorry if this idea seems silly, but this is the first custom
>> >>component/dojo
>> >>widget wrapper I have made, so it basically just does the same thing as
>> >>calling dojo.widget.byId("yourDlgId").show().
>> >>
>> >>My dialog takes a 'shower' and a 'closer' (IComponents) as required
>> >>parameters -- I wasn't sure the best way to do this... but I thought it
>> >>would allow more flexibility by doing it this way.
>> >>
>> >>My script looks like this: (Dialog.script)
>> >>
>> >><?xml version="1.0"?>
>> >><!DOCTYPE script PUBLIC
>> >>   "-//Apache Software Foundation//Tapestry Script Specification 3.0
>>//EN"
>> >>   "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
>> >><script>
>> >><input-symbol key="id" required="yes" />
>> >><input-symbol key="props" required="yes" />
>> >><input-symbol key="closer" required="yes" />
>> >><input-symbol key="shower" required="yes" />
>> >>     <body>
>> >>         <unique>
>> >>             dojo.require("dojo.widget.Dialog");
>> >>             dojo.require("tapestry.widget.Widget");
>> >>         </unique>
>> >>     </body>
>> >>     <initialization>
>> >>         tapestry.widget.synchronizeWidgetState("${id}", "dialog",
>> >>${props});
>> >>
>> >>dojo.widget.byId("${id}").setCloseControl(dojo.byId("${closer}"));
>> >>         dojo.widget.byId("${id}").setShowControl(dojo.byId
>>("${shower}"));
>> >>     </initialization>
>> >></script>
>> >>
>> >>So when I click on my shower (my form submit button) it pops up the
>>dialog
>> >>that has the closer (cancel button) and then instantaneously throws the
>> >>exception.
>> >>
>> >>It took me a lot longer than 10 minutes to make this (a couple of
>>hours!!)
>> >>but after it was done it all seems very simple. I just couldn't find 
>>any
>> >>documentation anywhere about it, so I just read through some source and
>> >>tried putting things together.
>> >>
>> >>When you say "I'm assuming it's not just a simple
>> >>dojo.widget.byId("yourDlgId").show()" are you implying that if it is
>>just
>> >>doing that, I ought to just use dojo directly in my template?
>> >>
>> >>Thanks,
>> >>Peter Beshai
>> >>
>> >>
>> >> >From: "Jesse Kuhnert" <jk...@gmail.com>
>> >> >Reply-To: "Tapestry users" <us...@tapestry.apache.org>
>> >> >To: "Tapestry users" <us...@tapestry.apache.org>
>> >> >Subject: Re: PageRenderSupport problem (Body component is in 
>>template)
>> >> >Date: Tue, 17 Oct 2006 22:54:39 -0400
>> >> >
>> >> >So what does it do after loading up? I'm assuming it's not just a
>>simple
>> >> >dojo.widget.byId("yourDlgId").show() ?
>> >> >
>> >> >I created the same component in 4.1.1 yesterday btw. (Took me all of
>>ten
>> >> >minutes!, of course that is expected..)
>> >> >
>> >> >On 10/17/06, Peter Beshai <pb...@hotmail.com> wrote:
>> >> >>
>> >> >>Hi,
>> >> >>
>> >> >>I have created a wrapper for the dojo component Dialog and it works
>> >>fine
>> >> >>(in
>> >> >>general!), but I have a problem when I use it with my form. I want 
>>to
>> >>have
>> >> >>the dialog appear when I submit the form (ie, the form submit button
>>is
>> >> >>the
>> >> >>show controller) and the dialog will basically have a cancel button
>> >>(close
>> >> >>controller and Submit component with type cancel).
>> >> >>
>> >> >>The dialog loads fine, but soon after loading it throws an 
>>exception:
>> >> >>Component FileUpload/uploadingDialog requires rendering support, but
>>no
>> >> >>PageRenderSupport object has been stored into the request cycle. 
>>This
>> >> >>object
>> >> >>is typically provided by a Body component. You should add a Body
>> >>component
>> >> >>to your template.
>> >> >>
>> >> >>I do have a body component defined : <body jwcid="body@Body">.
>> >> >>
>> >> >>Any ideas how to fix this problem?
>> >> >>
>> >> >>FYI in my Dialog.java file I have in the renderComponent function:
>> >> >>PageRenderSupport pageRenderSupport =
>> >> >>TapestryUtils.getPageRenderSupport(cycle, this);
>> >> >>getScript().execute(this, cycle, pageRenderSupport, scriptParms);
>> >> >>
>> >> >>
>> >> >>Peter Beshai
>> >> >>
>> >> >>_________________________________________________________________
>> >> >>Essayez la nouvelle génération de recherche avec Live Search.
>> >> >>http://www.live.com/?mkt=fr-ca
>> >> >>
>> >> >>
>> >> 
>> >>---------------------------------------------------------------------
>> >> >>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> >> >>For additional commands, e-mail: users-help@tapestry.apache.org
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >> >--
>> >> >Jesse Kuhnert
>> >> >Tapestry/Dojo/(and a dash of TestNG), team member/developer
>> >> >
>> >> >Open source based consulting work centered around
>> >> >dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com
>> >>
>> >>_________________________________________________________________
>> >>Découvrez Live Search de votre PC ou de votre appareil mobile dès
>> >>aujourd'hui. http://www.live.com/?mkt=fr-ca
>> >>
>> >>
>> >>---------------------------------------------------------------------
>> >>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> >>For additional commands, e-mail: users-help@tapestry.apache.org
>> >>
>> >>
>> >
>> >
>> >--
>> >Jesse Kuhnert
>> >Tapestry/Dojo/(and a dash of TestNG), team member/developer
>> >
>> >Open source based consulting work centered around
>> >dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com
>>
>>_________________________________________________________________
>>Voyez vos amis en faisant un appel vidèo dans Windows Live Messenger
>>http://imagine-msn.com/messenger/launch80/default.aspx?locale=fr-ca
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>
>
>--
>Robert Ramírez Vique
>Computer Science Engineer

_________________________________________________________________
Achetez ce que vous voulez, quand vous voulez sur Sympatico / MSN Magasiner 
http://magasiner.sympatico.msn.ca/content/shp/?ctId=101,ptnrid=176,ptnrdata=081805


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: PageRenderSupport problem (Body component is in template)

Posted by Roberto Ramírez Vique <ro...@gmail.com>.
Hello Peter and everybody !

I'm using tapestry 4.0, jdk 1.5 and tomcat 5.5.

I'm doing more or less the same as all of you, but I have a question.

My dojo dialogs are though to be places where the user can write information
and send it back to the server: like a way to have forms that sends
information to the server. My problem now is that all these dojo dialogs
needs a form in the same div because otherwise the submit buttons in the
dojo doesn't do anything. I understand that these dojo dialogs are rewritten
in any other place (in the DOM structure) and that's the problem why the
submit button doesn't work.
Well I have some of these popups working for list of elements, which are
modified with a dojo dialog. When I tried to save the current element (I'm
using a tag-selected of a submit button, as explained down) I always get the
last element as the modified one... Any of you have had this problem with
multiple forms ? Because is a problem of having multiple forms in a page,
because just with one form it works (but i can't have just one form due the
dojo dialog).


The way I tried to select the current element is very simple (and works with
a single form in a page, but not with a multiple form in a page):
HTML
<span jwcid="loop">
    <div jwcid="dojoDialog">
        <form jwcid="innerForm">
            <input type="text" jwcid="name"/>
            <input type="submit" jwcid="submitButton"/>
        </form>
    </div>
</span>

PAGE
<component id="loop" type="Form">
    <binding name="source" value="elementList"/>
    <binding name="value" value="currentElement"/>
</component>

<component id="personDetails" type="DojoDialogContainer"/>

<component id="innerForm" type="Form"/>

<component id="name" type="TextField">
    <binding name="value" value="currentElement.name"/>
</component>

<component id="submitButton" type="Submit">
    <binding name="selected" value="selectedElement"/>
    <binding name="tag" value="currentElement"/>
    <binding name="action" value="listener:onSubmit"/>
</component>

In the java code I get the "selectedElement" always as the last element from
the elementList but always with the correct values.

Any explanation, help, idea or something will be really appreciated,
       robert



On 10/18/06, Peter Beshai <pb...@hotmail.com> wrote:
>
> Great that fixed it up :-)
>
> You said you had wrapped the Dialog component just yesterday, but I don't
> see it in the tapestry-framework trunk. Is there somewhere I can go and
> see
> how you implemented it?
>
> Oh I have another question... I had to put the .jwc  and .script file in
> the
> WEB-INF directory. It seems more standard to keep them in the same
> location
> as the .java file. Do I need to configure something to be able to store
> everything in one place?
>
> Anyway, here's the code I used, any suggestions are welcome!
>
> Dialog.java::
> import java.util.HashMap;
> import java.util.Map;
>
> import org.apache.tapestry.AbstractComponent;
> import org.apache.tapestry.IComponent;
> import org.apache.tapestry.IMarkupWriter;
> import org.apache.tapestry.IRequestCycle;
> import org.apache.tapestry.IScript;
> import org.apache.tapestry.PageRenderSupport;
> import org.apache.tapestry.TapestryUtils;
> import org.apache.tapestry.dojo.DojoUtils;
> import org.apache.tapestry.dojo.IWidget;
> import org.apache.tapestry.json.JSONObject;
>
> public abstract class Dialog extends AbstractComponent implements IWidget
> {
>     /** id. */
>     public abstract String getIdParameter();
>
>     /** component that handles closing the dialog */
>     public abstract IComponent getCloser();
>
>     /** component that handles showing the dialog */
>     public abstract IComponent getShower();
>
>     /** bgColor */
>     public abstract String getBgColor();
>
>     /** bgOpacity */
>     public abstract Double getBgOpacity();
>
>     /** toggle */
>     public abstract String getToggle();
>
>     /** toggleDuration */
>     public abstract Integer getToggleDuration();
>
>     /** Injected script. */
>     public abstract IScript getScript();
>
>     public void renderWidget(IMarkupWriter writer, IRequestCycle cycle)
>     {
>         renderComponent(writer, cycle);
>     }
>
>     @SuppressWarnings("unchecked")
>     protected void renderComponent(IMarkupWriter writer, IRequestCycle
> cycle)
>     {
>         if(cycle.isRewinding()) {
>             renderBody(writer, cycle);
>             return;
>         }
>         // configure the node
>         writer.begin("div");
>         writer.attribute("id", getIdParameter());
>
>         renderInformalParameters(writer, cycle);
>         renderBody(writer, cycle);
>
>         writer.end();
>
>         // configure the widget
>         JSONObject obj = DojoUtils.parseJSONParameter(this, "options");
>         obj.put("widgetId", getId());
>         obj.put("toggle", getToggle());
>         obj.put("toggleDuration", getToggleDuration());
>         obj.put("bgColor", getBgColor());
>         obj.put("bgOpacity", getBgOpacity());
>
>         // setup script includes
>         Map scriptParms = new HashMap();
>         scriptParms.put("id", getIdParameter());
>         scriptParms.put("props", obj.toString());
>         scriptParms.put("closer", getCloser().getId());
>         scriptParms.put("shower", getShower().getId());
>         PageRenderSupport pageRenderSupport =
> TapestryUtils.getPageRenderSupport(cycle, this);
>
>         getScript().execute(this, cycle, pageRenderSupport, scriptParms);
>     }
> }
>
> Dialog.script::
> <?xml version="1.0"?>
> <!DOCTYPE script PUBLIC
>   "-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
>   "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
> <script>
> <input-symbol key="id" required="yes" />
> <input-symbol key="props" required="yes" />
> <input-symbol key="closer" required="yes" />
> <input-symbol key="shower" required="yes" />
>     <body>
>         <unique>
>             dojo.require("dojo.widget.Dialog");
>             dojo.require("tapestry.widget.Widget");
>         </unique>
>     </body>
>     <initialization>
>         tapestry.widget.synchronizeWidgetState("${id}", "dialog",
> ${props});
>         dojo.widget.byId("${id}").setCloseControl(dojo.byId("${closer}"));
>         dojo.widget.byId("${id}").setShowControl(dojo.byId("${shower}"));
>     </initialization>
> </script>
>
> Dialog.jwc::
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE component-specification PUBLIC
>   "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
>   "http://tapestry.apache.org/dtd/Tapestry_4_0.dtd">
>
> <component-specification class="com.mycom.tapestry.Dialog"
>         allow-body="yes"
>         allow-informal-parameters="yes">
>
>   <description>
>   Creates a dojo dialog widget
>   </description>
>
>   <parameter name="closer" required="yes"/>
>   <parameter name="shower" required="yes"/>
>
>   <parameter name="bgColor" default-value="literal:white" />
>   <parameter name="bgOpacity" default-value="0.5" />
>   <parameter name="toggle" default-value="literal:fade"/>
>   <parameter name="toggleDuration" default-value="250"/>
>
>   <parameter name="id" property="idParameter" default-value="id"/>
>
>   <inject property="script" type="script" object="Dialog.script"/>
>
> </component-specification>
>
>
> Peter Beshai
>
> >From: "Jesse Kuhnert" <jk...@gmail.com>
> >Reply-To: "Tapestry users" <us...@tapestry.apache.org>
> >To: "Tapestry users" <us...@tapestry.apache.org>
> >Subject: Re: PageRenderSupport problem (Body component is in template)
> >Date: Wed, 18 Oct 2006 12:31:25 -0400
> >
> >Without the benefit of knowing what your component code is doing I am
> going
> >to guess that you are attempting to render your dialog component during a
> >Form "rewind" cycle.
> >
> >The best thing to do in your case is check for cycle.isRewinding() and
> skip
> >over all blocks except for renderBody() .
> >
> >On 10/18/06, Peter Beshai <pb...@hotmail.com> wrote:
> >>
> >>Sorry if this idea seems silly, but this is the first custom
> >>component/dojo
> >>widget wrapper I have made, so it basically just does the same thing as
> >>calling dojo.widget.byId("yourDlgId").show().
> >>
> >>My dialog takes a 'shower' and a 'closer' (IComponents) as required
> >>parameters -- I wasn't sure the best way to do this... but I thought it
> >>would allow more flexibility by doing it this way.
> >>
> >>My script looks like this: (Dialog.script)
> >>
> >><?xml version="1.0"?>
> >><!DOCTYPE script PUBLIC
> >>   "-//Apache Software Foundation//Tapestry Script Specification 3.0
> //EN"
> >>   "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
> >><script>
> >><input-symbol key="id" required="yes" />
> >><input-symbol key="props" required="yes" />
> >><input-symbol key="closer" required="yes" />
> >><input-symbol key="shower" required="yes" />
> >>     <body>
> >>         <unique>
> >>             dojo.require("dojo.widget.Dialog");
> >>             dojo.require("tapestry.widget.Widget");
> >>         </unique>
> >>     </body>
> >>     <initialization>
> >>         tapestry.widget.synchronizeWidgetState("${id}", "dialog",
> >>${props});
> >>
> >>dojo.widget.byId("${id}").setCloseControl(dojo.byId("${closer}"));
> >>         dojo.widget.byId("${id}").setShowControl(dojo.byId
> ("${shower}"));
> >>     </initialization>
> >></script>
> >>
> >>So when I click on my shower (my form submit button) it pops up the
> dialog
> >>that has the closer (cancel button) and then instantaneously throws the
> >>exception.
> >>
> >>It took me a lot longer than 10 minutes to make this (a couple of
> hours!!)
> >>but after it was done it all seems very simple. I just couldn't find any
> >>documentation anywhere about it, so I just read through some source and
> >>tried putting things together.
> >>
> >>When you say "I'm assuming it's not just a simple
> >>dojo.widget.byId("yourDlgId").show()" are you implying that if it is
> just
> >>doing that, I ought to just use dojo directly in my template?
> >>
> >>Thanks,
> >>Peter Beshai
> >>
> >>
> >> >From: "Jesse Kuhnert" <jk...@gmail.com>
> >> >Reply-To: "Tapestry users" <us...@tapestry.apache.org>
> >> >To: "Tapestry users" <us...@tapestry.apache.org>
> >> >Subject: Re: PageRenderSupport problem (Body component is in template)
> >> >Date: Tue, 17 Oct 2006 22:54:39 -0400
> >> >
> >> >So what does it do after loading up? I'm assuming it's not just a
> simple
> >> >dojo.widget.byId("yourDlgId").show() ?
> >> >
> >> >I created the same component in 4.1.1 yesterday btw. (Took me all of
> ten
> >> >minutes!, of course that is expected..)
> >> >
> >> >On 10/17/06, Peter Beshai <pb...@hotmail.com> wrote:
> >> >>
> >> >>Hi,
> >> >>
> >> >>I have created a wrapper for the dojo component Dialog and it works
> >>fine
> >> >>(in
> >> >>general!), but I have a problem when I use it with my form. I want to
> >>have
> >> >>the dialog appear when I submit the form (ie, the form submit button
> is
> >> >>the
> >> >>show controller) and the dialog will basically have a cancel button
> >>(close
> >> >>controller and Submit component with type cancel).
> >> >>
> >> >>The dialog loads fine, but soon after loading it throws an exception:
> >> >>Component FileUpload/uploadingDialog requires rendering support, but
> no
> >> >>PageRenderSupport object has been stored into the request cycle. This
> >> >>object
> >> >>is typically provided by a Body component. You should add a Body
> >>component
> >> >>to your template.
> >> >>
> >> >>I do have a body component defined : <body jwcid="body@Body">.
> >> >>
> >> >>Any ideas how to fix this problem?
> >> >>
> >> >>FYI in my Dialog.java file I have in the renderComponent function:
> >> >>PageRenderSupport pageRenderSupport =
> >> >>TapestryUtils.getPageRenderSupport(cycle, this);
> >> >>getScript().execute(this, cycle, pageRenderSupport, scriptParms);
> >> >>
> >> >>
> >> >>Peter Beshai
> >> >>
> >> >>_________________________________________________________________
> >> >>Essayez la nouvelle génération de recherche avec Live Search.
> >> >>http://www.live.com/?mkt=fr-ca
> >> >>
> >> >>
> >> >>---------------------------------------------------------------------
> >> >>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> >> >>For additional commands, e-mail: users-help@tapestry.apache.org
> >> >>
> >> >>
> >> >
> >> >
> >> >--
> >> >Jesse Kuhnert
> >> >Tapestry/Dojo/(and a dash of TestNG), team member/developer
> >> >
> >> >Open source based consulting work centered around
> >> >dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com
> >>
> >>_________________________________________________________________
> >>Découvrez Live Search de votre PC ou de votre appareil mobile dès
> >>aujourd'hui. http://www.live.com/?mkt=fr-ca
> >>
> >>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> >>For additional commands, e-mail: users-help@tapestry.apache.org
> >>
> >>
> >
> >
> >--
> >Jesse Kuhnert
> >Tapestry/Dojo/(and a dash of TestNG), team member/developer
> >
> >Open source based consulting work centered around
> >dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com
>
> _________________________________________________________________
> Voyez vos amis en faisant un appel vidèo dans Windows Live Messenger
> http://imagine-msn.com/messenger/launch80/default.aspx?locale=fr-ca
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


-- 
Robert Ramírez Vique
Computer Science Engineer

Re: PageRenderSupport problem (Body component is in template)

Posted by Peter Beshai <pb...@hotmail.com>.
Great that fixed it up :-)

You said you had wrapped the Dialog component just yesterday, but I don't 
see it in the tapestry-framework trunk. Is there somewhere I can go and see 
how you implemented it?

Oh I have another question... I had to put the .jwc  and .script file in the 
WEB-INF directory. It seems more standard to keep them in the same location 
as the .java file. Do I need to configure something to be able to store 
everything in one place?

Anyway, here's the code I used, any suggestions are welcome!

Dialog.java::
import java.util.HashMap;
import java.util.Map;

import org.apache.tapestry.AbstractComponent;
import org.apache.tapestry.IComponent;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.IScript;
import org.apache.tapestry.PageRenderSupport;
import org.apache.tapestry.TapestryUtils;
import org.apache.tapestry.dojo.DojoUtils;
import org.apache.tapestry.dojo.IWidget;
import org.apache.tapestry.json.JSONObject;

public abstract class Dialog extends AbstractComponent implements IWidget
{
    /** id. */
    public abstract String getIdParameter();

    /** component that handles closing the dialog */
    public abstract IComponent getCloser();

    /** component that handles showing the dialog */
    public abstract IComponent getShower();

    /** bgColor */
    public abstract String getBgColor();

    /** bgOpacity */
    public abstract Double getBgOpacity();

    /** toggle */
    public abstract String getToggle();

    /** toggleDuration */
    public abstract Integer getToggleDuration();

    /** Injected script. */
    public abstract IScript getScript();

    public void renderWidget(IMarkupWriter writer, IRequestCycle cycle)
    {
        renderComponent(writer, cycle);
    }

    @SuppressWarnings("unchecked")
    protected void renderComponent(IMarkupWriter writer, IRequestCycle 
cycle)
    {
        if(cycle.isRewinding()) {
            renderBody(writer, cycle);
            return;
        }
        // configure the node
        writer.begin("div");
        writer.attribute("id", getIdParameter());

        renderInformalParameters(writer, cycle);
        renderBody(writer, cycle);

        writer.end();

        // configure the widget
        JSONObject obj = DojoUtils.parseJSONParameter(this, "options");
        obj.put("widgetId", getId());
        obj.put("toggle", getToggle());
        obj.put("toggleDuration", getToggleDuration());
        obj.put("bgColor", getBgColor());
        obj.put("bgOpacity", getBgOpacity());

        // setup script includes
        Map scriptParms = new HashMap();
        scriptParms.put("id", getIdParameter());
        scriptParms.put("props", obj.toString());
        scriptParms.put("closer", getCloser().getId());
        scriptParms.put("shower", getShower().getId());
        PageRenderSupport pageRenderSupport = 
TapestryUtils.getPageRenderSupport(cycle, this);

        getScript().execute(this, cycle, pageRenderSupport, scriptParms);
    }
}

Dialog.script::
<?xml version="1.0"?>
<!DOCTYPE script PUBLIC
  "-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
  "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
<script>
<input-symbol key="id" required="yes" />
<input-symbol key="props" required="yes" />
<input-symbol key="closer" required="yes" />
<input-symbol key="shower" required="yes" />
    <body>
        <unique>
            dojo.require("dojo.widget.Dialog");
            dojo.require("tapestry.widget.Widget");
        </unique>
    </body>
    <initialization>
        tapestry.widget.synchronizeWidgetState("${id}", "dialog", ${props});
        dojo.widget.byId("${id}").setCloseControl(dojo.byId("${closer}"));
        dojo.widget.byId("${id}").setShowControl(dojo.byId("${shower}"));
    </initialization>
</script>

Dialog.jwc::
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE component-specification PUBLIC
  "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
  "http://tapestry.apache.org/dtd/Tapestry_4_0.dtd">

<component-specification class="com.mycom.tapestry.Dialog"
	allow-body="yes"
	allow-informal-parameters="yes">

  <description>
  Creates a dojo dialog widget
  </description>

  <parameter name="closer" required="yes"/>
  <parameter name="shower" required="yes"/>

  <parameter name="bgColor" default-value="literal:white" />
  <parameter name="bgOpacity" default-value="0.5" />
  <parameter name="toggle" default-value="literal:fade"/>
  <parameter name="toggleDuration" default-value="250"/>

  <parameter name="id" property="idParameter" default-value="id"/>

  <inject property="script" type="script" object="Dialog.script"/>

</component-specification>


Peter Beshai

>From: "Jesse Kuhnert" <jk...@gmail.com>
>Reply-To: "Tapestry users" <us...@tapestry.apache.org>
>To: "Tapestry users" <us...@tapestry.apache.org>
>Subject: Re: PageRenderSupport problem (Body component is in template)
>Date: Wed, 18 Oct 2006 12:31:25 -0400
>
>Without the benefit of knowing what your component code is doing I am going
>to guess that you are attempting to render your dialog component during a
>Form "rewind" cycle.
>
>The best thing to do in your case is check for cycle.isRewinding() and skip
>over all blocks except for renderBody() .
>
>On 10/18/06, Peter Beshai <pb...@hotmail.com> wrote:
>>
>>Sorry if this idea seems silly, but this is the first custom
>>component/dojo
>>widget wrapper I have made, so it basically just does the same thing as
>>calling dojo.widget.byId("yourDlgId").show().
>>
>>My dialog takes a 'shower' and a 'closer' (IComponents) as required
>>parameters -- I wasn't sure the best way to do this... but I thought it
>>would allow more flexibility by doing it this way.
>>
>>My script looks like this: (Dialog.script)
>>
>><?xml version="1.0"?>
>><!DOCTYPE script PUBLIC
>>   "-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
>>   "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
>><script>
>><input-symbol key="id" required="yes" />
>><input-symbol key="props" required="yes" />
>><input-symbol key="closer" required="yes" />
>><input-symbol key="shower" required="yes" />
>>     <body>
>>         <unique>
>>             dojo.require("dojo.widget.Dialog");
>>             dojo.require("tapestry.widget.Widget");
>>         </unique>
>>     </body>
>>     <initialization>
>>         tapestry.widget.synchronizeWidgetState("${id}", "dialog",
>>${props});
>>         
>>dojo.widget.byId("${id}").setCloseControl(dojo.byId("${closer}"));
>>         dojo.widget.byId("${id}").setShowControl(dojo.byId("${shower}"));
>>     </initialization>
>></script>
>>
>>So when I click on my shower (my form submit button) it pops up the dialog
>>that has the closer (cancel button) and then instantaneously throws the
>>exception.
>>
>>It took me a lot longer than 10 minutes to make this (a couple of hours!!)
>>but after it was done it all seems very simple. I just couldn't find any
>>documentation anywhere about it, so I just read through some source and
>>tried putting things together.
>>
>>When you say "I'm assuming it's not just a simple
>>dojo.widget.byId("yourDlgId").show()" are you implying that if it is just
>>doing that, I ought to just use dojo directly in my template?
>>
>>Thanks,
>>Peter Beshai
>>
>>
>> >From: "Jesse Kuhnert" <jk...@gmail.com>
>> >Reply-To: "Tapestry users" <us...@tapestry.apache.org>
>> >To: "Tapestry users" <us...@tapestry.apache.org>
>> >Subject: Re: PageRenderSupport problem (Body component is in template)
>> >Date: Tue, 17 Oct 2006 22:54:39 -0400
>> >
>> >So what does it do after loading up? I'm assuming it's not just a simple
>> >dojo.widget.byId("yourDlgId").show() ?
>> >
>> >I created the same component in 4.1.1 yesterday btw. (Took me all of ten
>> >minutes!, of course that is expected..)
>> >
>> >On 10/17/06, Peter Beshai <pb...@hotmail.com> wrote:
>> >>
>> >>Hi,
>> >>
>> >>I have created a wrapper for the dojo component Dialog and it works 
>>fine
>> >>(in
>> >>general!), but I have a problem when I use it with my form. I want to
>>have
>> >>the dialog appear when I submit the form (ie, the form submit button is
>> >>the
>> >>show controller) and the dialog will basically have a cancel button
>>(close
>> >>controller and Submit component with type cancel).
>> >>
>> >>The dialog loads fine, but soon after loading it throws an exception:
>> >>Component FileUpload/uploadingDialog requires rendering support, but no
>> >>PageRenderSupport object has been stored into the request cycle. This
>> >>object
>> >>is typically provided by a Body component. You should add a Body
>>component
>> >>to your template.
>> >>
>> >>I do have a body component defined : <body jwcid="body@Body">.
>> >>
>> >>Any ideas how to fix this problem?
>> >>
>> >>FYI in my Dialog.java file I have in the renderComponent function:
>> >>PageRenderSupport pageRenderSupport =
>> >>TapestryUtils.getPageRenderSupport(cycle, this);
>> >>getScript().execute(this, cycle, pageRenderSupport, scriptParms);
>> >>
>> >>
>> >>Peter Beshai
>> >>
>> >>_________________________________________________________________
>> >>Essayez la nouvelle génération de recherche avec Live Search.
>> >>http://www.live.com/?mkt=fr-ca
>> >>
>> >>
>> >>---------------------------------------------------------------------
>> >>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> >>For additional commands, e-mail: users-help@tapestry.apache.org
>> >>
>> >>
>> >
>> >
>> >--
>> >Jesse Kuhnert
>> >Tapestry/Dojo/(and a dash of TestNG), team member/developer
>> >
>> >Open source based consulting work centered around
>> >dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com
>>
>>_________________________________________________________________
>>Découvrez Live Search de votre PC ou de votre appareil mobile dès
>>aujourd'hui. http://www.live.com/?mkt=fr-ca
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>
>
>--
>Jesse Kuhnert
>Tapestry/Dojo/(and a dash of TestNG), team member/developer
>
>Open source based consulting work centered around
>dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com

_________________________________________________________________
Voyez vos amis en faisant un appel vidèo dans Windows Live Messenger 
http://imagine-msn.com/messenger/launch80/default.aspx?locale=fr-ca


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: PageRenderSupport problem (Body component is in template)

Posted by Jesse Kuhnert <jk...@gmail.com>.
Without the benefit of knowing what your component code is doing I am going
to guess that you are attempting to render your dialog component during a
Form "rewind" cycle.

The best thing to do in your case is check for cycle.isRewinding() and skip
over all blocks except for renderBody() .

On 10/18/06, Peter Beshai <pb...@hotmail.com> wrote:
>
> Sorry if this idea seems silly, but this is the first custom
> component/dojo
> widget wrapper I have made, so it basically just does the same thing as
> calling dojo.widget.byId("yourDlgId").show().
>
> My dialog takes a 'shower' and a 'closer' (IComponents) as required
> parameters -- I wasn't sure the best way to do this... but I thought it
> would allow more flexibility by doing it this way.
>
> My script looks like this: (Dialog.script)
>
> <?xml version="1.0"?>
> <!DOCTYPE script PUBLIC
>   "-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
>   "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
> <script>
> <input-symbol key="id" required="yes" />
> <input-symbol key="props" required="yes" />
> <input-symbol key="closer" required="yes" />
> <input-symbol key="shower" required="yes" />
>     <body>
>         <unique>
>             dojo.require("dojo.widget.Dialog");
>             dojo.require("tapestry.widget.Widget");
>         </unique>
>     </body>
>     <initialization>
>         tapestry.widget.synchronizeWidgetState("${id}", "dialog",
> ${props});
>         dojo.widget.byId("${id}").setCloseControl(dojo.byId("${closer}"));
>         dojo.widget.byId("${id}").setShowControl(dojo.byId("${shower}"));
>     </initialization>
> </script>
>
> So when I click on my shower (my form submit button) it pops up the dialog
> that has the closer (cancel button) and then instantaneously throws the
> exception.
>
> It took me a lot longer than 10 minutes to make this (a couple of hours!!)
> but after it was done it all seems very simple. I just couldn't find any
> documentation anywhere about it, so I just read through some source and
> tried putting things together.
>
> When you say "I'm assuming it's not just a simple
> dojo.widget.byId("yourDlgId").show()" are you implying that if it is just
> doing that, I ought to just use dojo directly in my template?
>
> Thanks,
> Peter Beshai
>
>
> >From: "Jesse Kuhnert" <jk...@gmail.com>
> >Reply-To: "Tapestry users" <us...@tapestry.apache.org>
> >To: "Tapestry users" <us...@tapestry.apache.org>
> >Subject: Re: PageRenderSupport problem (Body component is in template)
> >Date: Tue, 17 Oct 2006 22:54:39 -0400
> >
> >So what does it do after loading up? I'm assuming it's not just a simple
> >dojo.widget.byId("yourDlgId").show() ?
> >
> >I created the same component in 4.1.1 yesterday btw. (Took me all of ten
> >minutes!, of course that is expected..)
> >
> >On 10/17/06, Peter Beshai <pb...@hotmail.com> wrote:
> >>
> >>Hi,
> >>
> >>I have created a wrapper for the dojo component Dialog and it works fine
> >>(in
> >>general!), but I have a problem when I use it with my form. I want to
> have
> >>the dialog appear when I submit the form (ie, the form submit button is
> >>the
> >>show controller) and the dialog will basically have a cancel button
> (close
> >>controller and Submit component with type cancel).
> >>
> >>The dialog loads fine, but soon after loading it throws an exception:
> >>Component FileUpload/uploadingDialog requires rendering support, but no
> >>PageRenderSupport object has been stored into the request cycle. This
> >>object
> >>is typically provided by a Body component. You should add a Body
> component
> >>to your template.
> >>
> >>I do have a body component defined : <body jwcid="body@Body">.
> >>
> >>Any ideas how to fix this problem?
> >>
> >>FYI in my Dialog.java file I have in the renderComponent function:
> >>PageRenderSupport pageRenderSupport =
> >>TapestryUtils.getPageRenderSupport(cycle, this);
> >>getScript().execute(this, cycle, pageRenderSupport, scriptParms);
> >>
> >>
> >>Peter Beshai
> >>
> >>_________________________________________________________________
> >>Essayez la nouvelle génération de recherche avec Live Search.
> >>http://www.live.com/?mkt=fr-ca
> >>
> >>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> >>For additional commands, e-mail: users-help@tapestry.apache.org
> >>
> >>
> >
> >
> >--
> >Jesse Kuhnert
> >Tapestry/Dojo/(and a dash of TestNG), team member/developer
> >
> >Open source based consulting work centered around
> >dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com
>
> _________________________________________________________________
> Découvrez Live Search de votre PC ou de votre appareil mobile dès
> aujourd'hui. http://www.live.com/?mkt=fr-ca
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


-- 
Jesse Kuhnert
Tapestry/Dojo/(and a dash of TestNG), team member/developer

Open source based consulting work centered around
dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com

Re: PageRenderSupport problem (Body component is in template)

Posted by Josh Long <st...@gmail.com>.
No kidding? Huh! I was just wondering about that.. How convenient! You need
a red cape, Jesse.. Something to better iconify your contributions :-)

Thanks in advance,
Josh

On 10/17/06, Jesse Kuhnert <jk...@gmail.com> wrote:
>
> So what does it do after loading up? I'm assuming it's not just a simple
> dojo.widget.byId("yourDlgId").show() ?
>
> I created the same component in 4.1.1 yesterday btw. (Took me all of ten
> minutes!, of course that is expected..)
>
> On 10/17/06, Peter Beshai <pb...@hotmail.com> wrote:
> >
> > Hi,
> >
> > I have created a wrapper for the dojo component Dialog and it works fine
> > (in
> > general!), but I have a problem when I use it with my form. I want to
> have
> > the dialog appear when I submit the form (ie, the form submit button is
> > the
> > show controller) and the dialog will basically have a cancel button
> (close
> > controller and Submit component with type cancel).
> >
> > The dialog loads fine, but soon after loading it throws an exception:
> > Component FileUpload/uploadingDialog requires rendering support, but no
> > PageRenderSupport object has been stored into the request cycle. This
> > object
> > is typically provided by a Body component. You should add a Body
> component
> > to your template.
> >
> > I do have a body component defined : <body jwcid="body@Body">.
> >
> > Any ideas how to fix this problem?
> >
> > FYI in my Dialog.java file I have in the renderComponent function:
> > PageRenderSupport pageRenderSupport =
> > TapestryUtils.getPageRenderSupport(cycle, this);
> > getScript().execute(this, cycle, pageRenderSupport, scriptParms);
> >
> >
> > Peter Beshai
> >
> > _________________________________________________________________
> > Essayez la nouvelle génération de recherche avec Live Search.
> > http://www.live.com/?mkt=fr-ca
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> > For additional commands, e-mail: users-help@tapestry.apache.org
> >
> >
>
>
> --
> Jesse Kuhnert
> Tapestry/Dojo/(and a dash of TestNG), team member/developer
>
> Open source based consulting work centered around
> dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com
>
>

Re: PageRenderSupport problem (Body component is in template)

Posted by Peter Beshai <pb...@hotmail.com>.
Sorry if this idea seems silly, but this is the first custom component/dojo 
widget wrapper I have made, so it basically just does the same thing as 
calling dojo.widget.byId("yourDlgId").show().

My dialog takes a 'shower' and a 'closer' (IComponents) as required 
parameters -- I wasn't sure the best way to do this... but I thought it 
would allow more flexibility by doing it this way.

My script looks like this: (Dialog.script)

<?xml version="1.0"?>
<!DOCTYPE script PUBLIC
  "-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
  "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
<script>
<input-symbol key="id" required="yes" />
<input-symbol key="props" required="yes" />
<input-symbol key="closer" required="yes" />
<input-symbol key="shower" required="yes" />
    <body>
        <unique>
            dojo.require("dojo.widget.Dialog");
            dojo.require("tapestry.widget.Widget");
        </unique>
    </body>
    <initialization>
        tapestry.widget.synchronizeWidgetState("${id}", "dialog", ${props});
        dojo.widget.byId("${id}").setCloseControl(dojo.byId("${closer}"));
        dojo.widget.byId("${id}").setShowControl(dojo.byId("${shower}"));
    </initialization>
</script>

So when I click on my shower (my form submit button) it pops up the dialog 
that has the closer (cancel button) and then instantaneously throws the 
exception.

It took me a lot longer than 10 minutes to make this (a couple of hours!!) 
but after it was done it all seems very simple. I just couldn't find any 
documentation anywhere about it, so I just read through some source and 
tried putting things together.

When you say "I'm assuming it's not just a simple 
dojo.widget.byId("yourDlgId").show()" are you implying that if it is just 
doing that, I ought to just use dojo directly in my template?

Thanks,
Peter Beshai


>From: "Jesse Kuhnert" <jk...@gmail.com>
>Reply-To: "Tapestry users" <us...@tapestry.apache.org>
>To: "Tapestry users" <us...@tapestry.apache.org>
>Subject: Re: PageRenderSupport problem (Body component is in template)
>Date: Tue, 17 Oct 2006 22:54:39 -0400
>
>So what does it do after loading up? I'm assuming it's not just a simple
>dojo.widget.byId("yourDlgId").show() ?
>
>I created the same component in 4.1.1 yesterday btw. (Took me all of ten
>minutes!, of course that is expected..)
>
>On 10/17/06, Peter Beshai <pb...@hotmail.com> wrote:
>>
>>Hi,
>>
>>I have created a wrapper for the dojo component Dialog and it works fine
>>(in
>>general!), but I have a problem when I use it with my form. I want to have
>>the dialog appear when I submit the form (ie, the form submit button is
>>the
>>show controller) and the dialog will basically have a cancel button (close
>>controller and Submit component with type cancel).
>>
>>The dialog loads fine, but soon after loading it throws an exception:
>>Component FileUpload/uploadingDialog requires rendering support, but no
>>PageRenderSupport object has been stored into the request cycle. This
>>object
>>is typically provided by a Body component. You should add a Body component
>>to your template.
>>
>>I do have a body component defined : <body jwcid="body@Body">.
>>
>>Any ideas how to fix this problem?
>>
>>FYI in my Dialog.java file I have in the renderComponent function:
>>PageRenderSupport pageRenderSupport =
>>TapestryUtils.getPageRenderSupport(cycle, this);
>>getScript().execute(this, cycle, pageRenderSupport, scriptParms);
>>
>>
>>Peter Beshai
>>
>>_________________________________________________________________
>>Essayez la nouvelle génération de recherche avec Live Search.
>>http://www.live.com/?mkt=fr-ca
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>
>
>--
>Jesse Kuhnert
>Tapestry/Dojo/(and a dash of TestNG), team member/developer
>
>Open source based consulting work centered around
>dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com

_________________________________________________________________
Découvrez Live Search de votre PC ou de votre appareil mobile dès 
aujourd’hui. http://www.live.com/?mkt=fr-ca


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: PageRenderSupport problem (Body component is in template)

Posted by Jesse Kuhnert <jk...@gmail.com>.
So what does it do after loading up? I'm assuming it's not just a simple
dojo.widget.byId("yourDlgId").show() ?

I created the same component in 4.1.1 yesterday btw. (Took me all of ten
minutes!, of course that is expected..)

On 10/17/06, Peter Beshai <pb...@hotmail.com> wrote:
>
> Hi,
>
> I have created a wrapper for the dojo component Dialog and it works fine
> (in
> general!), but I have a problem when I use it with my form. I want to have
> the dialog appear when I submit the form (ie, the form submit button is
> the
> show controller) and the dialog will basically have a cancel button (close
> controller and Submit component with type cancel).
>
> The dialog loads fine, but soon after loading it throws an exception:
> Component FileUpload/uploadingDialog requires rendering support, but no
> PageRenderSupport object has been stored into the request cycle. This
> object
> is typically provided by a Body component. You should add a Body component
> to your template.
>
> I do have a body component defined : <body jwcid="body@Body">.
>
> Any ideas how to fix this problem?
>
> FYI in my Dialog.java file I have in the renderComponent function:
> PageRenderSupport pageRenderSupport =
> TapestryUtils.getPageRenderSupport(cycle, this);
> getScript().execute(this, cycle, pageRenderSupport, scriptParms);
>
>
> Peter Beshai
>
> _________________________________________________________________
> Essayez la nouvelle génération de recherche avec Live Search.
> http://www.live.com/?mkt=fr-ca
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


-- 
Jesse Kuhnert
Tapestry/Dojo/(and a dash of TestNG), team member/developer

Open source based consulting work centered around
dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com