please help,Anyone? --------------------------- 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-tp18698367p18702367.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]