I'm trying to validate that at most 5 items were selected with a Palette
but I've had a series of problems. (Wicket 1.3.7)
palette.getRecorderComponent().add(myCompValidator) fails because
getRecorderComponent() returns null. I think it's created in onBeforeRender()
So I switched to form validation.
recorder.getInput() returns a string of comma separated choices "x, y, z".
recorder.getInputAsArray() returns an array of 1 containing the same string.
I suppose I could parse these strings, but what if the choices have commas?
recorder.getSelectedChoices() seems to "lag the state by one submit".
(Second submit with 6 will fail. Second submit with 5 will succeed.
gSC should probably only be used after validation.)
So what's the right approach?
Thanks,
-troy
final Palette pal1 = .....
form.add(new AbstractFormValidator() {
private static final long serialVersionUID = 1L;
@Override
public FormComponent[] getDependentFormComponents()
{
FormComponent out[] = new FormComponent[1];
out[0] = pal1.getRecorderComponent();
return out;
}
@Override
public void validate(Form form)
{
FormComponent r = pal1.getRecorderComponent();
System.err.println("INPUT: " + r.getInput());
String inputs[] = r.getInputAsArray();
System.err.println("ARRAY SIZE: " + inputs.length);
System.err.println("ARRAY: " + inputs);
System.err.println("ARRAY[0]: " + inputs[0]);
/* always return 1 input string ??
if (inputs.length > 5)
error(pal1.getRecorderComponent());
* */
Iterator it = pal1.getSelectedChoices();
int count = 0;
while (it.hasNext())
{
it.next();
if (++count > 5)
{
System.err.println("ERROR: " + count);
error(pal1.getRecorderComponent(), "Max");
return;
}
System.err.println("COUNT: " + count);
}
}
});
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]