attach it to a jira issue please -igor
On Wed, Sep 10, 2008 at 3:22 PM, German Morales <[EMAIL PROTECTED]> wrote: > 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] >>> >>> >> > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
