> How about this:
>
>
http://paste.pocoo.org/show/539346/>
> Sven
>
> Am 23.01.2012 17:53, schrieb Daniel Watrous:
>
>> Here's a little more code. You can see that I add the PropertyListView
>> to moviesForm...My listView (movieList) is a LoadableDetachableModel,
>> so it doesn't have the getModelObject() method. I'm still not quite
>> sure how to get access to the form details in onSubmit().
>>
>> Form moviesForm = new Form<ValueMap>("moviesForm") {
>> /**
>> * Show the resulting valid new movie
>> */
>> @Override
>> public final void onSubmit() {
>> Session session =
>> HibernateUtil.getSessionFactory().getCurrentSession();
>> session.beginTransaction();
>>
>> for (Movie movie : movieList.getModelObject()) {
>> session.save(movie);
>> }
>> session.getTransaction().commit();
>> }
>>
>> };
>>
>> // 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() {
>> Session session =
>> HibernateUtil.getSessionFactory().getCurrentSession();
>> session.beginTransaction();
>> session.delete(movieItem.getModelObject());
>> session.getTransaction().commit();
>>
>> movieList.detach();
>> }
>> });
>> }
>> }).setVersioned(false);
>>
>> add(moviesForm);
>>
>>
>>
>>
>>
>> On Mon, Jan 23, 2012 at 9:33 AM, Sven Meier<
[hidden email]> wrote:
>>>
>>> Do you have the ValueMap usage from a Wicket example (e.g. Guestbook)?
>>> You don't seem to have any code that wires a ValueMap into your form.
>>>
>>> The following should be enough:
>>>
>>>
>>> @Override
>>> public final void onSubmit() {
>>>
>>> Session session =
>>> HibernateUtil.getSessionFactory().getCurrentSession();
>>> session.beginTransaction();
>>>
>>> for (Movie movie : listView.getModelObject()) {
>>> session.save(movie);
>>> }
>>> session.getTransaction().commit();
>>> }
>>>
>>> Hope this helps
>>> Sven
>>>
>>>
>>> Am 23.01.2012 17:27, schrieb Daniel Watrous:
>>>
>>>> The problem is that I can't seem to access the form submitted values
>>>> in onSubmit().
>>>>
>>>> ValueMap values = getModelObject();
>>>>
>>>> values is null...
>>>>
>>>> Daniel
>>>>
>>>> On Mon, Jan 23, 2012 at 9:24 AM, Sven Meier<
[hidden email]> wrote:
>>>>>
>>>>> So you're already using PropertyListView, fine.
>>>>>
>>>>> What's your problem once again?
>>>>>
>>>>> Sven
>>>>>
>>>>>
>>>>> Am 23.01.2012 17:20, schrieb Daniel Watrous:
>>>>>>
>>>>>> 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
>>>>>> <
[hidden email]> 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:
[hidden email]
>>>>>> For additional commands, e-mail:
[hidden email]
>>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail:
[hidden email]
>>>>> For additional commands, e-mail:
[hidden email]
>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail:
[hidden email]
>>>> For additional commands, e-mail:
[hidden email]
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail:
[hidden email]
>>> For additional commands, e-mail:
[hidden email]
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail:
[hidden email]
>> For additional commands, e-mail:
[hidden email]
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
[hidden email]
> For additional commands, e-mail:
[hidden email]
>