I'd like to add a couple of hooks into the client-side, non-Ajax validation 
code to make it easier (possible?) to call custom JavaScript validators. My 
current solution seems a bit stop-gappy, but ultimately might be flexible 
enough to suffice.

ObCaveat: I've only looked at the "xhtml" theme so far; other themes may have 
different requirements than my current implementation supports.

Right now my idea is to register, via JS, custom validators into an S2-specific 
JS module. The JS in form-close-validate.ftl, after running its existing code, 
would check to see if any validators have been registered and if so, iterate 
over and call them. "Registration" could be as simple as putting a map of JS 
functions in a known spot; whatever. (A registration process seems more... 
official?)

The validation function receives the form element. Other than that it's 
completely responsible for doing its thing--there's no connection to the 
server-side config at all (hence stop-gappy). My current code just returns 
"true" if there's a validation error, but should return a map/etc. that also 
contains a continueValidation value.

(I'd also kinda like to be able to give each validator a set of messages--this 
way the validator proper could live in a .js file but get messages from a .jsp 
via <s:text.../>. A simple regexp-based JS utility method can be used to do 
parameter replacement from the JS validator. This could probably be done 
without involving the framework, though; haven't thought about it yet.)

The validator can use the existing addError() function (which I'd rather see in 
an S2 module). Ideally the <s:fielderror.../) tag, or a client-side equivalent, 
could be used as a container with an unordered list, filled with the messages 
and un-hidden on errors. Or the user can register a callback for adding 
messages and addError could defer to that if present or call it in addition to 
the existing code, or whatever.

Thoughts, improvements, objections, ...?

Thanks,
Dave


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to