The model of your listView has to be LoadableDetachable so that the listView
retrieves the new list values each time.   Also the setReuseItems() might
have to be false.   I don't think you're doing form validation within the
ListView correct?





Marcel Bonnet wrote:
> 
> Hi everybody, I'm new in the mail-list. I've been studying the framework,
> I
> even read the book Wicket in Action, but I'm having trouble using some
> kind
> of repeater inside a Form, updating and validating the model.
> What I'm trying to do is a ListView inside a Form: when the user change
> the
> value of the dropdownchoice, it needs to fire a validator to verify if the
> new choice is already in the list. If it is, the validator must call the
> "error(validatable)" method from AbstractValidator because I don't want
> repeated choices in the list.
> First question, anybody knows a simple way to do this?
> Second, if I'm on the right way with the code above, how can I get the
> listview's model (with the updated values changed by the user, instead of
> the default items rendered on the view on the first time) so I can pass
> this
> updated model to my Validator (it needs to know the values in the list to
> know wich is repeated).
> 
> I just supressed the part of the code that fires my feedback message ( a
> kind of Label because I don't want a message per component, just a global
> message)
> Thanks for any help. Marcel.
> 
> private class InputForm extends Form
>     {
>         // holds NameWrapper elements
>         private List<NameWrapper> data;
> 
>         public InputForm(String name, IFeedback feedback)
>         {
>             super(name);
> 
>             final SubmitLink update = new SubmitLink("update");
>             add(update);
> 
>             // add some dummy data
>             data = new ArrayList<NameWrapper>();
>             data.add(new NameWrapper("one", 1, "default = 1", true));
>             data.add(new NameWrapper("two", 2, "default = 2", false));
>             data.add(new NameWrapper("three", 3, "default = 3", false));
>             data.add(new NameWrapper("four", 4, "default = 4", true));
>  final Model dataModel = new Model();
>             dataModel.setObject(data);
>             ListView listView = new ListView("list", dataModel)
>             {
> 
> protected void populateItem(ListItem item)
>                 {
> 
>                     NameWrapper wrapper =
> (NameWrapper)item.getModelObject();
> 
>                     item.add(new Label("name", wrapper.getName()));
>                     item.add(new CheckBox("check", new
> PropertyModel(wrapper, "selected")));
> 
>                     DropDownChoice combo = new DropDownChoice("combo"
>                             , new Model(wrapper)
>                             , new ArrayList(Arrays.asList(new
> NameWrapper(1000,"mil"), new NameWrapper(2000,"dois mil"), new
> NameWrapper(3000,"trĂªs mil")))
>                             , new ChoiceRenderer("comboText","comboId"));
> 
>                     combo.add(new
> NameWrapperValidator((List<NameWrapper>)dataModel.getObject()));
>                     item.add(combo);
>                 }
>             };
>                         *listView.setReuseItems(true); *//i read this line
> is very important
>                         add(listView);
> 
> 

-- 
View this message in context: 
http://www.nabble.com/ListView-inside-Form%3A-retrieving-the-listview%27s-model-tp24893789p24922802.html
Sent from the Wicket - User mailing list archive at Nabble.com.


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

Reply via email to