In your validator, invoke Form.visitFormComponents(FormComponent.IVisitor
visitor) 

The IVisitor will check getInput() vs the other
formComponent.getModelObject()



Marcel Bonnet wrote:
> 
> Thanks for helping.
> In fact I was trying to validate the ListView's model. I thought that each
> time we press the Submit button the new choice selected in each
> DropDownChoice in the ListView's rows would be submited and filled inside
> the Model of the ListView, meaning the model would now have the new values
> selected by the user. So I was trying to validate it's Model, because I
> want
> to find a way to tell the user if he selected the same choice twice or
> more.
> Each row of the ListView has a DropDownChoice but the form must not accept
> repeated choices.
> Now I'm not sure if the model would be updated or not...
> I had succes writing such repeater with a validator like this using
> RefreshingView instead of ListView. As I experienced, the model of the
> RefreshingView was updated when the for was submited, but only with
> TextField or CheckBox. When I changed the TextField by a DropwDownChoice,
> it
> just not worked, so I started working around with a ListView, but I'm
> having
> problems too.
> Any ideas, please for validating repeated choices inside a repeater?
> 
> 
> 2009/8/11 bferr <[email protected]>
> 
>>
>> 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]
>>
>>
> 
> 

-- 
View this message in context: 
http://www.nabble.com/ListView-inside-Form%3A-retrieving-the-listview%27s-model-tp24893789p24943860.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