Re: Refreshing components with new data w/o altering the backing model
Igor, Regarding the stated problem: As we know ,the formcomponent's getValue method returns value from the model for the component when rendering if raw input is equal to no raw input constant. So basically the problem is that component's model should not be updated until the user submits the form containing the zip field here. So looks like holding on to the raw input until the form is actually submitted should do the trick. Do you think its a good idea to hold on to the raw input by not calling clearInput in ajaxformcomponentupdatingbehavior. It may be cleared in process() call of form if valid. The only problem seems to be distinguishing incorrect input from correct input. May be in this case, it will be upto user to render any error label or feedback in that case. I understand this may go against fundamental way wicket works.. i.e to pull only from models if data is correct. But the scenario described above means that user doesnt want to update any transient data (- as user may keep changing zip field many times for example) , in models - so therefore pick up from component instead of model when rendering EXCEPT after submit when rendering the same page again. -swaroop On 10/23/07, Igor Vaynberg [EMAIL PROTECTED] wrote: dont know if you need that, just add javascript to the ajax target to set the values on the fields.. -igor On 10/23/07, Matej Knopp [EMAIL PROTECTED] wrote: I think what you could try (though it would be a nasty hack :) ) is to set rawInput property on FormComponent. However, you'll need some introspection to do that, as it is private and we don't plan to provide an accessor for it :) -Matej On 10/23/07, karthik Guru [EMAIL PROTECTED] wrote: I have a form like this - Name: [.] Zip: [.] City: [.] State: [.] [Save] On filling the zip i want to auto populate the city and state. I can attach a AjaxFormComponentUpdatingBehavior to the zip field and do this. But I don't want to update the zip model, so i plan to have my version of AjaxFormComponentUpdatingBehavior and 'not' update the model. I can possibly get the user entered value from the convertedInput. But I don't want to want to update the city and the state model either to auto-populate the fields. Basically I want to hold off on the model updates until somebody clicks the save button. Can i set the converted input on a component and get it to refresh through Ajax? I know that I can do this through javascript ($(fieldId).value = ''blah blah')and add it to AjaxTarget. But i was wondering if i can just work with components (do setConvertedInput / something) and then add it to Ajaxtarget and make it work? -- karthik -- - 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]
Re: Refreshing components with new data w/o altering the backing model
i dont think this case warrants repainting the form component via ajax when all you really have to do is write simple js that puts the selected text into the textfield. that said, there are many ways to skin the cat... -igor On 10/24/07, Swaroop Belur [EMAIL PROTECTED] wrote: Igor, Regarding the stated problem: As we know ,the formcomponent's getValue method returns value from the model for the component when rendering if raw input is equal to no raw input constant. So basically the problem is that component's model should not be updated until the user submits the form containing the zip field here. So looks like holding on to the raw input until the form is actually submitted should do the trick. Do you think its a good idea to hold on to the raw input by not calling clearInput in ajaxformcomponentupdatingbehavior. It may be cleared in process() call of form if valid. The only problem seems to be distinguishing incorrect input from correct input. May be in this case, it will be upto user to render any error label or feedback in that case. I understand this may go against fundamental way wicket works.. i.e to pull only from models if data is correct. But the scenario described above means that user doesnt want to update any transient data (- as user may keep changing zip field many times for example) , in models - so therefore pick up from component instead of model when rendering EXCEPT after submit when rendering the same page again. -swaroop On 10/23/07, Igor Vaynberg [EMAIL PROTECTED] wrote: dont know if you need that, just add javascript to the ajax target to set the values on the fields.. -igor On 10/23/07, Matej Knopp [EMAIL PROTECTED] wrote: I think what you could try (though it would be a nasty hack :) ) is to set rawInput property on FormComponent. However, you'll need some introspection to do that, as it is private and we don't plan to provide an accessor for it :) -Matej On 10/23/07, karthik Guru [EMAIL PROTECTED] wrote: I have a form like this - Name: [.] Zip: [.] City: [.] State: [.] [Save] On filling the zip i want to auto populate the city and state. I can attach a AjaxFormComponentUpdatingBehavior to the zip field and do this. But I don't want to update the zip model, so i plan to have my version of AjaxFormComponentUpdatingBehavior and 'not' update the model. I can possibly get the user entered value from the convertedInput. But I don't want to want to update the city and the state model either to auto-populate the fields. Basically I want to hold off on the model updates until somebody clicks the save button. Can i set the converted input on a component and get it to refresh through Ajax? I know that I can do this through javascript ($(fieldId).value = ''blah blah')and add it to AjaxTarget. But i was wondering if i can just work with components (do setConvertedInput / something) and then add it to Ajaxtarget and make it work? -- karthik -- - 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]
Refreshing components with new data w/o altering the backing model
I have a form like this - Name: [.] Zip: [.] City: [.] State: [.] [Save] On filling the zip i want to auto populate the city and state. I can attach a AjaxFormComponentUpdatingBehavior to the zip field and do this. But I don't want to update the zip model, so i plan to have my version of AjaxFormComponentUpdatingBehavior and 'not' update the model. I can possibly get the user entered value from the convertedInput. But I don't want to want to update the city and the state model either to auto-populate the fields. Basically I want to hold off on the model updates until somebody clicks the save button. Can i set the converted input on a component and get it to refresh through Ajax? I know that I can do this through javascript ($(fieldId).value = ''blah blah')and add it to AjaxTarget. But i was wondering if i can just work with components (do setConvertedInput / something) and then add it to Ajaxtarget and make it work? -- karthik --
Re: Refreshing components with new data w/o altering the backing model
Hi, two week ago I had a similar problem (see Thread AutoCompleteTextfield---how to populate two input fields - tf4592192.html#a13166291) The solution was to have an autocomplete-list attached to the zipcode and the city-field. The list shows the valid zipcode-city combinations for the zipcode/city entered so far. When the user chooses an entry from the list, both fields are filled accordingly. To achieve this the AutoCompleteTextField's behavior was modified so that it is able to update two fields at once from the user's selection (with different values). In that way, entering the data occurs in the browser only, the model remains untouched until the user submits the form. (Indeed, a slightly different approach, but works great). regards, Oliver Matej Knopp-2 wrote: I think what you could try (though it would be a nasty hack :) ) is to set rawInput property on FormComponent. However, you'll need some introspection to do that, as it is private and we don't plan to provide an accessor for it :) -Matej On 10/23/07, karthik Guru [EMAIL PROTECTED] wrote: I have a form like this - Name: [.] Zip: [.] City: [.] State: [.] [Save] On filling the zip i want to auto populate the city and state. I can attach a AjaxFormComponentUpdatingBehavior to the zip field and do this. But I don't want to update the zip model, so i plan to have my version of AjaxFormComponentUpdatingBehavior and 'not' update the model. I can possibly get the user entered value from the convertedInput. But I don't want to want to update the city and the state model either to auto-populate the fields. Basically I want to hold off on the model updates until somebody clicks the save button. Can i set the converted input on a component and get it to refresh through Ajax? I know that I can do this through javascript ($(fieldId).value = ''blah blah')and add it to AjaxTarget. But i was wondering if i can just work with components (do setConvertedInput / something) and then add it to Ajaxtarget and make it work? -- karthik -- - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] -- View this message in context: http://www.nabble.com/Refreshing-components-with-new-data-w-o-altering-the-backing-model-tf4675439.html#a13359783 Sent from the Wicket - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Refreshing components with new data w/o altering the backing model
dont know if you need that, just add javascript to the ajax target to set the values on the fields.. -igor On 10/23/07, Matej Knopp [EMAIL PROTECTED] wrote: I think what you could try (though it would be a nasty hack :) ) is to set rawInput property on FormComponent. However, you'll need some introspection to do that, as it is private and we don't plan to provide an accessor for it :) -Matej On 10/23/07, karthik Guru [EMAIL PROTECTED] wrote: I have a form like this - Name: [.] Zip: [.] City: [.] State: [.] [Save] On filling the zip i want to auto populate the city and state. I can attach a AjaxFormComponentUpdatingBehavior to the zip field and do this. But I don't want to update the zip model, so i plan to have my version of AjaxFormComponentUpdatingBehavior and 'not' update the model. I can possibly get the user entered value from the convertedInput. But I don't want to want to update the city and the state model either to auto-populate the fields. Basically I want to hold off on the model updates until somebody clicks the save button. Can i set the converted input on a component and get it to refresh through Ajax? I know that I can do this through javascript ($(fieldId).value = ''blah blah')and add it to AjaxTarget. But i was wondering if i can just work with components (do setConvertedInput / something) and then add it to Ajaxtarget and make it work? -- karthik -- - 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]