Let me give a little more detail. The way that markup is managed is
through this:

        // Add movieListView of existing movies
        moviesForm.add(new PropertyListView<Movie>("movies", movieList) {

            @Override
            public void populateItem(final ListItem<Movie> movieItem) {
                final RatingModel rating = new
RatingModel(movieItem.getModelObject().getRating());
                movieItem.add(new
TextField<String>("name").setType(String.class));
                movieItem.add(new DropDownChoice<Category>("category",
Arrays.asList(Category.values()), new
EnumChoiceRenderer<Category>(this)));
                movieItem.add(new RatingPanel ("rating", new
PropertyModel<Integer>(rating, "rating"), 5, new
PropertyModel<Integer>(rating, "numberOfVotes"), false) {
                    @Override
                    public boolean onIsStarActive(int star) {
                        return rating.isActive(star);
                    }
                    @Override
                    public void onRated(int newRating,
AjaxRequestTarget target) {
                        movieItem.getModelObject().setRating(newRating);
                        rating.updateRating(newRating);

                        Session session =
HibernateUtil.getSessionFactory().getCurrentSession();
                        session.beginTransaction();
                        session.update(movieItem.getModelObject());
                        session.getTransaction().commit();

                        movieList.detach();
                    }
                });
                movieItem.add(new Link("removeLink") {
                    @Override
                    public void onClick() {
                        System.out.print(movieItem.getModelObject().getId());
                        Session session =
HibernateUtil.getSessionFactory().getCurrentSession();
                        session.beginTransaction();
                        session.delete(movieItem.getModelObject());
                        session.getTransaction().commit();
                        movieList.detach();
                    }
                });
            }
        }).setVersioned(false);

I suppose that means that I'm not actually adding new items to the
list as a form. Maybe what I need is to treat the entire component as
a form from the beginning. I'm just not sure exactly how to do that.

Any ideas?

Daniel

On Mon, Jan 23, 2012 at 9:07 AM, Daniel Watrous
<[email protected]> wrote:
> I have populated a form with values representing several different
> objects. This is what my markup looks like:
>
>
>            <form wicket:id = "moviesForm" id = "moviesForm">
>                <span wicket:id = "movies" id = "movies">
>                    <a wicket:id = "removeLink">(remove)</a>
>                    <input type="text" wicket:id="name" class="nospam"/>
>                    <select wicket:id="category"/>
>                    <span wicket:id="rating">rating</span>
>                    <br />
>                </span>
>                <input type = "submit" value = "Update Movies" 
> id="formsubmit"/>
>            </form>
>
> The span is reproduced for each object that I pull from a database.
> There is a different identifier for each span, as you can see here:
> http://screencast.com/t/l8pLGZnJVn8
>
> I want to be able to access these objects when I click submit the
> form, but I'm not sure how to get access to them. This is what I have
> tried so far:
>
>
>        Form moviesForm = new Form<ValueMap>("moviesForm") {
>            /**
>             * Show the resulting valid new movie
>             */
>            @Override
>            public final void onSubmit() {
>                ValueMap values = getModelObject();
>
>                // perform validation and security here
>                if (StringUtils.isBlank((String) values.get("name"))) {
>                    error("Received bad input!!!");
>                    return;
>                }
>
>                Session session =
> HibernateUtil.getSessionFactory().getCurrentSession();
>                session.beginTransaction();
>
>                Movie movie = new Movie();
>                movie.setName((String) values.get("name"));
>                movie.setCategory((Category) values.get("category"));
>                session.save(movie);
>                session.getTransaction().commit();
>            }
>
>        };
>
> The ValueMap values comes back null from getModelObject(). Any
> pointers for me to get these objects back in a way that I can easily
> update them?
>
> Thanks.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to