[x] All above -- Bruno Borges Summa Technologies Inc. www.summa-tech.com (48) 8404-1300 (11) 3055-2060
On 5/10/07, Johan Compagner <[EMAIL PROTECTED]> wrote:
If we are talking about client side validators: then you want support for 2 behaviors that are attached to "blur" and "onchange" ? or one client side javascript check and an ajax call to the behavior? Or are there others that you have in mind? johan On 5/10/07, Bruno Borges <[EMAIL PROTECTED]> wrote: > > What if we want to have in one IValidator, more than one IBehavior? just > wondering... :) > > This could be important and usefull, if in one Validator two _very simple_ > behaviors are needed, and they need to be keep separated with each other. > > []'s > -- > Bruno Borges > Summa Technologies Inc. > www.summa-tech.com > (48) 8404-1300 > (11) 3055-2060 > > On 5/10/07, Johan Compagner <[EMAIL PROTECTED]> wrote: > > > > and i don't like that > > that is mixing 2 classes as once thing > > that means no reuse what so ever. This just makes big copy paste > actions. > > > > it should be possible to seperate IValidator and IBehavior > implementations > > else if i want to use an IValidator i have to reimplement it > > yes ofcourse i can make my behavior implement also IValidator > > and then passthrough everything of the IValidtor to the real validator > > that > > is again a delegate. > > > > we just don't have multiply inheritance in java.. > > > > having a IValidator provide a IBehavior is much nicer in my eyes > > > > johan > > > > > > On 5/10/07, Igor Vaynberg <[EMAIL PROTECTED]> wrote: > > > > > > hrm. after looking at it i dont like it :| > > > > > > ivalidator is a pretty simple interface. why not simply allow a > behavior > > > to > > > implement it > > > > > > add(ivalidator v) { > > > if (v instanceof ibehavior) { add((ibehavior)v); } > > > ... > > > } > > > > > > so now a behavior can implement ivalidator. the problem that > > > ibehaviorprovider tries to solve is to allow one to glue any > ivalidator > > > with > > > any ibehavior. well, that can very simply be done with an adapter > class > > > that > > > simply delegates to the right delegate > > > > > > class ValidatorWithBehavior implements IBehavior,IValidator{ > > > private IBehavior behavior; > > > private IValidator validator; > > > public ValidatorWithBehavior(IValidator v, IBehavior b) { > > > this.behavior=b;this.validator=v; > > > } > > > ...delegating methods... > > > } > > > > > > this way we do not need IBehaviorProvider. we make behaviors and > > > validators > > > more flexible because a behavior can also be a validator. there is no > > > removeBehavior/removeValidator problem because they are the same > > instance > > > and only exist once. > > > > > > my two cents > > > > > > -igor > > > > > > > > > On 5/9/07, Eelco Hillenius <[EMAIL PROTECTED]> wrote: > > > > > > > > > no. dont forget that the idea of IValidator is to be decoupled > from > > > > wicket, > > > > > to allow the reuse of validators in service layer. i do that all > the > > > > time > > > > > now and it rocks! my service layer and my ui layer are validated > by > > > the > > > > same > > > > > code. adding ivalidator.getbehavior() will break all that nice > > > > decoupling. > > > > > > > > > > i always thought that something like this would work > > > > > > > > > > IClientSideValidator extends IValidator { /** rerturn a js func to > > > > validate > > > > > the value */ CharSequence getValidationScript(); } > > > > > > > > /** > > > > * Validator that provides a behavior, e.g. for rendering client-side > > or > > > > ajax > > > > * validation. This interface can be implemented by either > > > > * [EMAIL PROTECTED] IValidator validators} or [EMAIL PROTECTED] IFormValidator form > > > validators}. > > > > */ > > > > public interface IBehaviorProvider extends IClusterable > > > > { > > > > /** > > > > * Gets behavior for validation. > > > > * > > > > * @param component > > > > * component currently using the validator > > > > * @return The behavior, which can be used for rendering e.g > . > > > > */ > > > > IBehavior getValidationBehavior(Component component); > > > > } > > > > > > > > same here, instanceof check and ready. Not extra code as how to > > > > interpret it, and all the flexibility that behaviors provide. > > > > > > > > Eelco > > > > > > > > > >