I have a quickstart project, should i send it privately?

2008/9/10 German Morales <[EMAIL PROTECTED]>

> I don't see any div inside span in my stuff (we have suffered problems with
> this long ago, and we are more careful lately).
>
> Besides that, is it ok that the ModalWindow creates its own div at body
> level? Isn't that the reason of my problem?
>
>
> German
>
> 2008/9/10 Matej Knopp <[EMAIL PROTECTED]>
>
>> Check if your DOM hierarchy is valid, e.g. if you don't have any <div>
>> tag inside <span> tags.
>>
>> -Matej
>>
>> On Wed, Sep 10, 2008 at 10:08 PM, German Morales
>> <[EMAIL PROTECTED]> wrote:
>> > I think that we are closer to the problem now...
>> >
>> > In my case (going back to the original post), the form i'm submitting is
>> > inside a ModalWindow.
>> >
>> > I'm using Firebug to see the generated DOM in runtime, and i find this
>> > (extracted...) before calling the ModalWindow:
>> >
>> > <body>
>> >   <div here is all my content, even the placeholder for the modal
>> window>
>> >      <form here is my root form>
>> >   </div>
>> >   <div added by wicket for the ajax debug window>
>> > </body>
>> >
>> > after calling the modal window:
>> >
>> > <body>
>> >   <div here is all my content, even the placeholder for the modal
>> window>
>> >      <form here is my root form>
>> >   </div>
>> >   <div added by wicket for the ajax debug window>
>> >   <div added by modal window on the fly>
>> >      <form a second form tag for the form in my modal window>
>> >   </div>
>> > </body>
>> >
>> > I think that it's ok that the second form is rendered as form, since it
>> does
>> > not have another form outside (to be rendered as div).
>> > The problem is that ModalWindow inserted a div outside my root form.
>> > Therefore Wicket.Form.serialize() must be serializing up to that second
>> > form.
>> >
>> > I'm looking at the live Modal window example
>> > http://www.wicket-library.com/wicket-examples/ajax/modal-window.1
>> > and i see that this behavior of adding a separated div at body level is
>> > "normal", not something strange in my structure.
>> >
>> > German
>> >
>> > 2008/9/10 Matej Knopp <[EMAIL PROTECTED]>
>> >
>> >> You are right. It calls Wicket.Form.serialize(form) with the nested
>> >> form, but the serialize method should find parent with <form> tag name
>> >> and serialize that.
>> >>
>> >> -Matej
>> >>
>> >>
>> >> On Wed, Sep 10, 2008 at 9:04 PM, German Morales
>> >> <[EMAIL PROTECTED]> wrote:
>> >> > There are no nested form tags, as expected... let me give you more
>> >> details
>> >> > i'm discovering:
>> >> >
>> >> > The AjaxSubmitLink has something like this...
>> >> >  function onclick(event) {
>> >> >   var wcall = wicketSubmitFormById(" < id of my nested form > ");
>> >> >   return false;
>> >> >  }
>> >> >
>> >> > This calls wicketSubmitFormById, no surprises...
>> >> >  function wicketSubmitFormById(formId, url, submitButton,
>> successHandler,
>> >> > failureHandler, precondition, channel) {
>> >> >   var call = new Wicket.Ajax.Call(url, successHandler,
>> failureHandler,
>> >> > channel);
>> >> >   ...
>> >> >   return call.submitFormById(formId, submitButton);
>> >> >  }
>> >> >
>> >> > which calls submitFormById...
>> >> >  submitFormById: function(formId, submitButton) {
>> >> >   var form = Wicket.$(formId);
>> >> >   ...
>> >> >   return this.submitForm(form, submitButton);
>> >> >  }
>> >> >
>> >> > which calls submitForm passing my nested form (i'm debugging with
>> >> Firebug)
>> >> >  // Submits a form using ajax.
>> >> >  // This method serializes a form and sends it as POST body.
>> >> >  submitForm: function(form, submitButton) {
>> >> >   var body = function() {
>> >> >     var s = Wicket.Form.serialize(form);
>> >> >     if (submitButton != null) {
>> >> >       s += Wicket.Form.encode(submitButton) + "=1";
>> >> >     }
>> >> >     return s;
>> >> >   }
>> >> >   return this.request.post(body);
>> >> >  }
>> >> >
>> >> > which ultimately calls Wicket.Form.serialize(form) with my nested
>> form,
>> >> not
>> >> > with the root form.
>> >> >
>> >> > Am i right?
>> >> >
>> >> > German
>> >> >
>> >> > PS: meanwhile i'm trying to produce a quickstart... but i guess it
>> will
>> >> take
>> >> > me some time.
>> >> > 2008/9/10 Matej Knopp <[EMAIL PROTECTED]>
>> >> >
>> >> >> But that is exactly what should happen. Wicket javascript should
>> find
>> >> >> root form element and serialize that. Can you please check in your
>> >> >> markup if there are any nested form tags? (shouldn't be).
>> >> >>
>> >> >> -Matej
>> >> >>
>> >> >> On Wed, Sep 10, 2008 at 8:11 PM, German Morales
>> >> >> <[EMAIL PROTECTED]> wrote:
>> >> >> > That would be somehow complicated to produce right now.
>> >> >> >
>> >> >> > To make my question different... why the javascript side sends
>> only
>> >> the
>> >> >> > nested form info (wicketSubmitFormById()) and on wicket side the
>> root
>> >> >> form
>> >> >> > is the one that gets called?
>> >> >> >
>> >> >> > I've already tried and it works ok if i make the nested form do
>> the
>> >> >> > processing instead of the root form.
>> >> >> >    protected void onEvent(AjaxRequestTarget target) {
>> >> >> >        getForm().onFormSubmitted();  // getRootForm() removed
>> >> >> >
>> >> >> > Another possibility would be that javascript side sends the values
>> for
>> >> >> the
>> >> >> > root form, and then it would be ok that the root form does the
>> >> >> processing.
>> >> >> >
>> >> >> > Thanks,
>> >> >> >
>> >> >> > German
>> >> >> >
>> >> >> >
>> >> >> > 2008/9/10 Matej Knopp <[EMAIL PROTECTED]>
>> >> >> >
>> >> >> >> I would need a quick start to see where it is going wrong.
>> >> >> >>
>> >> >> >> -Matej
>> >> >> >>
>> >> >> >> On Wed, Sep 10, 2008 at 7:26 PM, German Morales
>> >> >> >> <[EMAIL PROTECTED]> wrote:
>> >> >> >> > Investigating a little more, my problem seems to be caused by
>> >> >> >> > AjaxFormSubmitBehavior#onEvent
>> >> >> >> >
>> >> >> >> >    protected void onEvent(AjaxRequestTarget target) {
>> >> >> >> >        getForm().getRootForm().onFormSubmitted();
>> >> >> >> >
>> >> >> >> > which calls onFormSubmitted on the RootForm, and not in the
>> Form
>> >> i've
>> >> >> >> passed
>> >> >> >> > to my AjaxSubmitLink.
>> >> >> >> >
>> >> >> >> > could someone explain me why it does that?
>> >> >> >> >
>> >> >> >> > In fact, overriding onEvent to call onFormSubmitted on
>> getForm()
>> >> and
>> >> >> not
>> >> >> >> in
>> >> >> >> > the root form solves my problems... but am i breaking something
>> >> else?
>> >> >> >> >
>> >> >> >> > Thanks,
>> >> >> >> >
>> >> >> >> > German
>> >> >> >> >
>> >> >> >> >
>> >> >> >> > 2008/9/9 German Morales <[EMAIL PROTECTED]>
>> >> >> >> >
>> >> >> >> >> Hi Matej,
>> >> >> >> >>
>> >> >> >> >> Thanks for the answer.
>> >> >> >> >>
>> >> >> >> >> I have an AjaxSubmitLink both for opening and closing the
>> modal
>> >> >> window.
>> >> >> >> >> Should that make any trouble?
>> >> >> >> >> In both cases i have data to persist, so it must be a
>> .*Submit.*
>> >> >> >> component.
>> >> >> >> >>
>> >> >> >> >> Also, my problem happens when closing the window, not when
>> opening
>> >> >> it.
>> >> >> >> >> I summarize it again:
>> >> >> >> >> -the browser sends an ajax call with the values in the modal
>> >> window
>> >> >> >> >> -but on wicket side the main form of the page is the one that
>> >> takes
>> >> >> >> charge
>> >> >> >> >> -the components on the page then receive the new input, but
>> >> there's
>> >> >> >> >> actually nothing coming from the browser for them
>> >> >> >> >> -some components (text components) handle it well, some not
>> >> >> (checkbox,
>> >> >> >> >> dropdownchoice).
>> >> >> >> >> -the misbehaving component get a rawinput of null instead of
>> >> >> >> NO_RAW_INPUT,
>> >> >> >> >> which then produces the side effect that the component does
>> not
>> >> get
>> >> >> the
>> >> >> >> >> value from the model on rendering.
>> >> >> >> >>
>> >> >> >> >> Please see the doubts section at the end of the original
>> e-mail.
>> >> >> >> >>
>> >> >> >> >> Thanks again,
>> >> >> >> >>
>> >> >> >> >> German
>> >> >> >> >>
>> >> >> >> >> 2008/9/9 Matej Knopp <[EMAIL PROTECTED]>
>> >> >> >> >>
>> >> >> >> >> The link that shows the modal window must be
>> >> AjaxButton/SubmitLink.
>> >> >> >> >>>
>> >> >> >> >>> -Matej
>> >> >> >> >>>
>> >> >> >> >>> On Tue, Sep 9, 2008 at 11:20 PM, German Morales
>> >> >> >> >>> <[EMAIL PROTECTED]> wrote:
>> >> >> >> >>> > Hi all,
>> >> >> >> >>> >
>> >> >> >> >>> > I've a problem with Forms and ModalWindows.
>> >> >> >> >>> >
>> >> >> >> >>> > I have this stuff:
>> >> >> >> >>> > -a page with a main Form (the only one that is rendered as
>> an
>> >> HTML
>> >> >> >> form
>> >> >> >> >>> tag)
>> >> >> >> >>> > -this my only page, since all inside it is changed by
>> replacing
>> >> >> >> panels
>> >> >> >> >>> using
>> >> >> >> >>> > ajax.
>> >> >> >> >>> > -inside some other levels of panels, i have a panel with my
>> >> >> content
>> >> >> >> (let
>> >> >> >> >>> me
>> >> >> >> >>> > call it myContentPanel), which has its own (sub) Form
>> (which is
>> >> >> >> rendered
>> >> >> >> >>> as
>> >> >> >> >>> > a div).
>> >> >> >> >>> > -myContentPanel has some controls... TextFields,
>> >> DropDownChoices,
>> >> >> >> >>> > CheckBoxes.
>> >> >> >> >>> > -myContentPanel has also a link that opens a ModalWindow.
>> >> >> >> >>> > -the ModalWindow has its own Form with components, and an
>> >> >> >> AjaxSubmitLink
>> >> >> >> >>> to
>> >> >> >> >>> > close it.
>> >> >> >> >>> >
>> >> >> >> >>> > Now the problem...
>> >> >> >> >>> > 1- I enter to myContentPanel and enter some values in the
>> >> >> components.
>> >> >> >> >>> > 2- I press the link to open the ModalWindow.
>> >> >> >> >>> > 3- I work with the ModalWindow, then press an
>> AjaxSubmitLink to
>> >> >> close
>> >> >> >> >>> it.
>> >> >> >> >>> > 4- When refreshing myContentPanel, the values in some
>> controls
>> >> is
>> >> >> >> lost:
>> >> >> >> >>> > CheckBoxes, DropDownChoices, but NOT in TextFields.
>> >> >> >> >>> >
>> >> >> >> >>> > After some investigation, this is what i've discovered:
>> >> >> >> >>> > -on step 3 (accept and close the ModalWindow), the
>> >> AjaxSubmitLink
>> >> >> >> calls
>> >> >> >> >>> > (javascript) wicketSubmitFormById passing the ModalWindow's
>> >> form
>> >> >> as
>> >> >> >> >>> > parameter.
>> >> >> >> >>> > -this processes the ModalWindow's form and prepares the
>> values
>> >> to
>> >> >> be
>> >> >> >> >>> sent to
>> >> >> >> >>> > wicket side.
>> >> >> >> >>> > -but when i see the url, it mentions that the form that
>> will be
>> >> >> used
>> >> >> >> for
>> >> >> >> >>> the
>> >> >> >> >>> > HTTP request is the page's form (because it's the only real
>> >> form,
>> >> >> i
>> >> >> >> >>> think
>> >> >> >> >>> > this is normal).
>> >> >> >> >>> > -on wicket side, the request processing calls
>> >> >> Form#onFormSubmitted,
>> >> >> >> >>> which
>> >> >> >> >>> > calls #inputChanged, which calls a visitor visiting all
>> >> >> components...
>> >> >> >> in
>> >> >> >> >>> the
>> >> >> >> >>> > main form!
>> >> >> >> >>> > -this ends up calling FormComponent#inputChanged on the
>> >> >> CheckBoxes,
>> >> >> >> >>> > DropDownChoices, TextFields that where in myContentPanel
>> (also
>> >> for
>> >> >> >> the
>> >> >> >> >>> > controls in the ModalWindow, but that's no surprise).
>> >> >> >> >>> > -given that the javascript only prepared the data for the
>> >> >> >> ModalWindow's
>> >> >> >> >>> > form, the values for the components in myContentPanel is
>> empty.
>> >> >> >> >>> > -looking deeper in #inputChanged, getInputAsArray() gives
>> null
>> >> for
>> >> >> >> the
>> >> >> >> >>> > components in myContentPanel.
>> >> >> >> >>> > -then, since CheckBox and DropDownChoice answer true to
>> >> >> >> >>> isInputNullable()
>> >> >> >> >>> > (default in FormComponent), the rawInput is set to null,
>> even
>> >> if i
>> >> >> >> >>> didn't
>> >> >> >> >>> > touch the CheckBoxes/DropDownChoices at all in this call
>> (then
>> >> >> losing
>> >> >> >> >>> the
>> >> >> >> >>> > previous value: NO_RAW_INPUT).
>> >> >> >> >>> > -on step 4, when the CheckBox/DropDownChoice wants to get
>> >> rendered
>> >> >> >> >>> again,
>> >> >> >> >>> > onComponentTag calls FormComponent#getValue, which if
>> >> >> >> >>> > (NO_RAW_INPUT.equals(rawInput)) uses the Model to get the
>> value
>> >> >> (what
>> >> >> >> i
>> >> >> >> >>> > would expect), but in my case returns the rawInput (null...
>> >> ouch).
>> >> >> >> >>> >
>> >> >> >> >>> > I have fixed it temporaly by overriding isInputNullable in
>> my
>> >> >> >> >>> > CheckBoxes/DropDownChoice, but i understand that this is
>> not a
>> >> >> very
>> >> >> >> good
>> >> >> >> >>> > solution.
>> >> >> >> >>> >
>> >> >> >> >>> > Some doubts that remain:
>> >> >> >> >>> > -is there anything wrong with my structure of forms and
>> panels,
>> >> >> which
>> >> >> >> is
>> >> >> >> >>> > actually producing these side effects?
>> >> >> >> >>> > -if only the values for ModalWindow form are sent to the
>> >> server,
>> >> >> why
>> >> >> >> the
>> >> >> >> >>> is
>> >> >> >> >>> > onFormSubmitted called on the main page form?
>> >> >> >> >>> > -the javadoc in isInputNullable is not very clear for me...
>> do
>> >> i
>> >> >> >> break
>> >> >> >> >>> > something else if i override isInputNullable answering
>> false?
>> >> >> >> >>> >
>> >> >> >> >>> > Thanks in advance,
>> >> >> >> >>> >
>> >> >> >> >>> > German
>> >> >> >> >>> >
>> >> >> >> >>>
>> >> >> >> >>>
>> >> >>
>> ---------------------------------------------------------------------
>> >> >> >> >>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> >> >> >> >>> For additional commands, e-mail:
>> [EMAIL PROTECTED]
>> >> >> >> >>>
>> >> >> >> >>>
>> >> >> >> >>
>> >> >> >> >
>> >> >> >>
>> >> >> >>
>> ---------------------------------------------------------------------
>> >> >> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> >> >> >> For additional commands, e-mail: [EMAIL PROTECTED]
>> >> >> >>
>> >> >> >>
>> >> >> >
>> >> >>
>> >> >>
>> ---------------------------------------------------------------------
>> >> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> >> >> For additional commands, e-mail: [EMAIL PROTECTED]
>> >> >>
>> >> >>
>> >> >
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> >> For additional commands, e-mail: [EMAIL PROTECTED]
>> >>
>> >>
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>

Reply via email to