If I instead of item.getModel() for the Check, uses some PropertyModel that
evaluates to a String identifier it works fine, but then only the identifier
is saved, and not the object, which as I understand it should be the
purpose. I haven't looked at the code, but I wander what uuid is exactly as
the equals apparently fail on non basic types. Will have a look when I get
the time. Thanks for the hint.

/Steen

2008/5/8 Thomas Mäder <[EMAIL PROTECTED]>:

> We seem to have a similar problem with a wizard page. We came across the
> following code in Check.onComponentTag(..)
>
>        if (group.hasRawInput())
>        {
>            final String[] input = group.getInputAsArray();
>
>            if (input != null)
>            {
>                for (int i = 0; i < input.length; i++)
>                {
>                    if (uuid.equals(input[i]))
>                    {
>                        tag.put("checked", "checked");
>
>
> It looks like the Check component is checking for the existence of raw
> input, but then using the input from the current request (via
> getInputAsArray()) to render. Sounds fishy! I figure this could be related?
>
> Thomas
>
> On Wed, May 7, 2008 at 5:27 PM, Steen Larsen <[EMAIL PROTECTED]> wrote:
>
> > Hi,
> >
> > I have made a CheckGroup vith a ListView of Check's than works fine,
> except
> > that when it is submitted and I'm on the next page and want to go back
> > through a Wicket Button (not the browsers back button), all the checks
> are
> > empty even thouch the model behind still contains the selected obejcts.
> > Here
> > is the example code of the first page:
> >
> > public HomePage() {
> >        Order order = ((WicketSession) (Session.get())).getOrder();
> >        if (order.getDigitalPackets() == null)
> >            order.setDigitalPackets(new ArrayList<Product>());
> >        System.err.println("LIST1 = " + order.getDigitalPackets());
> >        Form form = new DigitalOrderForm("digitalOrderForm");
> >        form.setModel(new CompoundPropertyModel(order));
> >        add(form);
> >        List<Product> allProducts = new ArrayList<Product>();
> >        for (int i = 0; i < 10; i++) {
> >            Product p = new Product();
> >            p.setProductKey(i + "");
> >            p.setTotalPrice(new BigDecimal(100 + i));
> >            p.setProductName("Product" + i);
> >            allProducts.add(p);
> >        }
> >        CheckGroup group = new CheckGroup("digitalPackets");
> >        form.add(group);
> >        ListView products = new ListView("products", allProducts) {
> >            protected void populateItem(ListItem item) {
> >              item.add(new Check("check",
> > item.getModel()).setEscapeModelStrings(false));
> >              item.add(new Label("productName", new
> > PropertyModel(item.getModel(), "productName")));
> >              item.add(new Label("totalPrice", new
> > PropertyModel(item.getModel(), "totalPrice")));
> >            }
> >        };
> >        group.add(products.setReuseItems(true));
> >    }
> >
> >    class DigitalOrderForm extends Form {
> >        DigitalOrderForm(String s) {
> >            super(s);
> >        }
> >
> >        protected void onSubmit() {
> >            Order order = (Order) getModelObject();
> >            System.err.println("LIST2 = " +
> > order.getDigitalPackets());
> >            setResponsePage(PageTwo.class);
> >        }
> >    }
> >
> > The second page is just a back button like this:
> >
> > public PageTwo() {
> >        add(new Button("back") {
> >            public void onSubmit() {
> >                setResponsePage(HomePage.class);
> >            }
> >        });
> >    }
> >
> > Anybody knows how to get the selected objects shown when you go back like
> > that ?
> >
> > /Steen
> >
>

Reply via email to