I'm sorry, gmail shortkeys did me in this time :)
On Mon, Jul 28, 2008 at 5:06 PM, nanotech <[EMAIL PROTECTED]> wrote:
>
> 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]
>
>
--
Ryan Gravener
http://twitter.com/ryangravener