Hi,

First, thanks to all who have been helping me as I am new to Wicket.  I
am splitting out two issues I am dealing with to try to keep things
clear.

I am trying to write a simple app that does CRUD operations on database
records.  The goal is for the app to make use of a tab panel where each
tab encapsulates one table from the database.  Each tab panel has two
groups (WebMarkupContainer).  The first, selectGroup, displays a list
(DDC) of the current items, and three buttons, add, edit and delete.
The second, editGroup, is displayed when either the add or edit button
was clicked on the select group, displays the record attributes and save
and cancel buttons.  The tab panel has a "selectedRecord" which is used
by both groups' components via PropertyModels. Very basic stuff.

When I choose a record and click the edit button, the record is
displayed in the edit group properly.  If I then choose cancel, the edit
group is no longer displayed and the select group DDC selection is null
as expected. I then choose another record from the list and click the
edit button and the previous record information is displayed in the edit
group even though the select group DDC shows the correct/selected
record.

This problem also occurs if I first choose to add a new record and then
cancel the add and then choose to edit a different record.  The DDC
shows the correct/selected record, but all the attributes in the edit
group are null/defaults for a new record.

If I remove the call to setDefaultFormProcessing(false) on the cancel
button, selecting other records for edit works correctly, but I can't
cancel a creating a new record if I use a RequiredTextField because the
form validation fails.

If I select a record for editing or save the newly created record, I can
select a different record for edit or create another one correctly.  So
I must be doing something wrong in the cancel logic. My editForm
(created in the EditGroup constructor) looks like this:

            Form editForm = new Form("editForm");
            
            editForm.add(new Label("nameLabel", "Name"));
            
            editForm.add(new Label("attributeLabel", "Attribute"));

            editForm.add(new RequiredTextField<String>("recordNameText",
                    new PropertyModel<String>(MyRecordPanel.this,
                            "selectedRecord.name")));

            editForm.add(new DropDownChoice<Lir>("attributes",
                    new PropertyModel<Attribute>(MyRecordPanel.this,
                            "selectedRecord.attribute"),
                    RateCentrePanel.this.getAttributes(),
                    new AttributeRenderer()));

            ....

            editForm.add(new Button("cancel")
            {
                private static final long serialVersionUID = 1L;

                public void onSubmit()
                {
                    MyRecordPanel.this.selectedRecord = null;
                    editGroup.setVisible(false);
                    selectGroup.setVisible(true);
                }
            }.setDefaultFormProcessing(false));

            add(editForm);

Other than setting the selectedRecord to null, what should I be doing
differently?

Thanks in advance!

Shelli

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to