Note that the code works on the live system. In other words, records
selected by the user get deleted from the database when the user
submits the form.
I'd appreciate any thoughts on why formTester.submit("deleteButton")
deselects each checkbox before submitting the form.
Thanks
On Thu, Dec 31, 2009 at 11:30 AM, Alec Swan <[email protected]> wrote:
> I have a form which contains a DataView where each row has a checkbox.
> The form also contains a submit link which deletes the rows with
> selected checkboxes from the database.
>
> The following code uses WicketTester to test the form behavior. The
> checkboxes are selected correctly before FormTester.submit(buttonId)
> is called. However, FormTester.submit(buttonId) method calls
> CheckBox#unselect() on each checkbox before submitting the form. Why
> is that?
>
> Thanks,
>
> public void selectAndDeleteRecipients() {
> final FormTester formTester = tester.newFormTester("myForm");
> final Form form = formTester.getForm();
> form.visitChildren(CheckBox.class, new IVisitor<CheckBox>()
> {
> �...@override
> public Object component(CheckBox component) {
> final IdCheckBoxModel checkBoxModel =
> (IdCheckBoxModel) component.getDefaultModel();
> checkBoxModel.select();
> return CONTINUE_TRAVERSAL;
> }
> });
>
> formTester.submit("deleteButton"); // this call unselects all
> check boxes
> }
>
>
> /**
> * A checkbox containing an object id.
> */
> public class IdCheckBoxModel extends AbstractCheckBoxModel
> {
> private final long objectId;
>
> private final Set selectedIds;
>
> public IdCheckBoxModel(Long objectId, Set selectedIds) {
> Verify.argumentsNotNull(objectId, selectedIds);
> this.objectId = objectId;
> this.selectedIds = selectedIds;
> }
>
> public long getObjectId() {
> return objectId;
> }
>
> �...@override
> public boolean isSelected() {
> return selectedIds.contains(objectId);
> }
>
> �...@override
> public void select() {
> selectedIds.add(objectId);
> }
>
> �...@override
> public void unselect() {
> selectedIds.remove(objectId);
> }
> }
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]