Hi Ryan, Did you answer my post? i am unable to see any answer?
Thanks RG Ryan Gravener-3 wrote: > > On Mon, Jul 28, 2008 at 3:59 PM, nanotech <[EMAIL PROTECTED]> wrote: > >> >> Hi All, >> >> I have a Save Form where user should be able to add/save new records and >> should be able >> to view feedback if there are any errors. >> >> In short, When user loads up the page he sees a form and under it a >> DataTable >> which holds the deafault search results. >> >> If he tries to add a record and Add is "Successful" then DataTable gets >> updated via Ajax. >> In case of "Failure" errors are reported on feedback panel. >> >> Here is how I have implemented it: >> >> =================== >> SaveContactPage.html >> =================== >> >> <div wicket:id="saveUserFeedback">[Feedback-error messages etc.]</div> >> <form wicket:id="saveUserForm"> >> <table> >> <tr> >> <td>First Name:</td> >> <td><input type="text" wicket:id="firstName" >> /></td> >> </tr> >> <tr> >> <td>Last Name:</td> >> <td><input type="text" wicket:id="lastName" >> /></td> >> </tr> >> <tr> >> <td><input type="submit" >> wicket:id="saveContactButton" /></td> >> </tr> >> >> </table> >> </form> >> <!-- Updatable container for search/add results --> >> <div wicket:id="resultsContainer"> >> <table wicket:id="addResultsTable">[Results for add/search >> Contacts]</table> >> </div> >> ===================== >> SaveContactPage.java >> ====================== >> public class SaveContactPage extends WebPage >> { >> // Hold reference to provider.. >> AddContactDataProvider provider; >> // Hold refernce to FeedbackPanel... >> FeedbackPanel saveUserFeedback; >> //Hold refernece to updatable dataTable's container.. >> WebMarkupContainer resultsContainer; >> >> public SaveContactPage() >> { >> add(saveUserFeedback = new >> FeedbackPanel("saveUserFeedback")); >> saveUserFeedback.setOutputMarkupId(true); >> >> SaveUserForm userForm = new SaveUserForm("saveUserForm"); >> add(userForm); >> >> // Get a new provider. >> provider = new AddContactDataProvider((ContactInfoPOJO) >> userForm.getModelObject()); >> >> // Get all the columns. >> List<IColumn> columns = createColumns(); >> >> resultsContainer = new >> WebMarkupContainer("resultsContainer"); >> resultsContainer.add(new DataTable("addResultsTable", >> columns, >> provider, 10)); >> >> } >> >> private List<IColumn> createColumns() >> { >> List<IColumn> columns = new ArrayList(); >> columns.add(new PropertyColumn(this.getModel(), >> "firstName")); >> columns.add(new PropertyColumn(this.getModel(), >> "lastName")); >> } >> >> // Begin Save USER Form. >> private class SaveUserForm extends StatelessForm >> { >> public SaveUserForm(String id) >> { >> super(id); >> // Set Form's model >> setModel(new CompoundPropertyModel(new >> ContactInfoPOJO())); >> add(new TextField("firstName")); >> add(new TextField("lastName")); >> add(new AjaxFallbackButton("saveContactButton", this) >> { >> @Override >> protected void onSubmit(AjaxRequestTarget target, >> Form form) >> { >> // TODO 1: Is this Correct approach >> // (i.e. calling the provider >> // again to refresh the container) >> // On Submit....call the provider again? >> >> provider = new >> AddContactDataProvider(form.getModelObject()); >> >> //Refresh the dataTable >> target.addComponent(resultsContainer); >> >> // In case of Failure...Display the error >> messages. >> >> } >> >> protected void onError(AjaxRequestTarget target, >> Form form) >> { >> // TODO 3: Show Errors...if any >> // But Error happned in DataProvider... >> // How do I get hold of Error Object >> Here... >> target.addComponent(saveUserFeedback); >> } >> >> }); >> >> } >> } >> } >> >> >> ====================== >> AddContactDataProvider.java >> ====================== >> >> public class AddContactDataProvider extends SortableDataProvider >> { >> >> private ContactInfoPOJO contactPojo; >> private ContactManager contactManager; >> >> public AddContactDataProvider(ContactInfoPOJO contactPojo) >> { >> this.contactPojo = contactPojo; >> contactManager = new JDBCContactManager(); >> } >> >> public Iterator iterator(int first, int count) >> { >> // Save the Contact... >> contactManager.saveContact(contactPojo); >> >> //TODO 2::: HOW? WHERE??? >> //If Save FAILED then GET ERROR MESSAGE >> >> >> // Get the saved list back.... >> List contacts = contactManager.getUsers(); >> if (first > 0) { >> contacts = contacts.subList(first, first + count); >> } >> return contacts.iterator(); >> } >> >> public IModel model(Object object) >> { >> return new ContactModel((ContactInfoPOJO)object); >> } >> >> public int size() >> { >> return contactManager.getContacts().size(); >> } >> >> } >> >> >> Questions: >> 1. Is calling dataprovider again the correct approach for updating the >> datatable? (See TODO 1 above) Can someone please suggest an alternate >> approach? >> 2. How do I pass the Error Object to Page's Panel from DataProvider in >> case >> of Unsuccessful save?(see TODo: 2 above) >> 3. Will onError be called if I somehow plugin the error message to >> feedback >> Panel (See TODO: 3) >> >> >> >> Thanks for reading the post. >> -- >> View this message in context: >> http://www.nabble.com/Best-way-to-implement-DataTable-updatable-via-Ajax-tp18698367p18698367.html >> Sent from the Wicket - User mailing list archive at Nabble.com. >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > > -- > Ryan Gravener > http://twitter.com/ryangravener > > -- View this message in context: http://www.nabble.com/Best-way-to-implement-DataTable-updatable-via-Ajax-tp18698367p18699753.html Sent from the Wicket - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]