And a quick test shows that the underlying code CANNOT handle choices with commas in them. -troy
On Wed, Oct 7, 2009 at 4:58 PM, Troy Cauble <[email protected]> wrote: > Thanks, > That's a better place to attach validation. > > But it still leaves me working with a single String > of comma separated selections. It makes me > wonder if the underlying code can handle choices > that contain commas. > > -troy > > On Wed, Oct 7, 2009 at 4:27 PM, Igor Vaynberg <[email protected]> wrote: >> override newrecordercomponent() and add your validator there. >> >> -igor >> >> >> On Wed, Oct 7, 2009 at 11:56 AM, Troy Cauble <[email protected]> wrote: >>> 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] >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
