Sylvain Wallez wrote:

<snip />
Hmm... There are different issues here:

Validation:
We can extend the <fd:range> or <fd:value-count> validators so that they can validate a repeater. But the issue then is that a repeater has no way to automatically display its error, and therefore it's up the template writer not to forget to add a <ft:validation-error> somewhere.

Enabling/disabling controls:
This is different from validation, as the controls must be disabled to ensure that we don't go outside of the specified constraints. This cannot be implemented as a validator (which is called too late in the process), and requires the concept of min and max rows to be built into the repeater itself.

I would go for this second solution, as it provides a better user experience (you can't do the action, rather than having to correct it afterwards), but this requires some changes to the repeater code:
- add min-rows/max-rows properties

already done by jorg's patch

- add support for repeater listeners, so that repeater-actions and row-actions can register themselves on the repeater and automatically change their state according to the size of the repeater.

Looking at the sources I found that there is a ActionListener class for each repeater-action, where rows are added and deleted. So would it be possible to ask the repeater for its min and max size at this places and disable the buttons ? Then I could add some disable flag to the actions, which controls the rendering. So something that would automatically add a "styling disabled" fragment ? Maybe it would be better to add the min and maxsize attributes to the repeater-action tags then.. as actually not the repeater, but the action would perform the validation ?

And maybe it could be possible to add "automatic validation message display" to the action, so that a alert would be displayed next to the disabled add button ?

Sorry, many questions :-),
Regards,
tom

Reply via email to