JavaFX Form Validation
fbrunnerlist at gmx.ch
Mon Jun 11 01:47:14 PDT 2012
I haven't worked with JSR-303, yet, but I would appreciate if the Java community could come up with a validation framework which can be used consistently on various layers.
If JSR-303 currently doesn't fit the needs of JavaFX, maybe the JavaFX team could get involved in JSR-303 to make sure it fits the needs of JavaFX as well?
Am Montag 11 Juni 2012, 01:52:10 schrieb Jonathan Giles:
> Hi all,
> I'm currently in the very, very early stages of developing a validation
> API for future inclusion into JavaFX. I thought rather than get too far
> into the research and development of a proof of concept, I would see
> what you all think. Any feedback now would be very useful.
> Essentially, there are a few common styles related to form validation.
> Some of the more likely approaches include:
> * The 'JGoodies Validation framework'  approach, where the
> developer provides a Validator that will then run over the form and
> gather feedback to return to the user (for example, it would test
> that the 'name field' is not empty, and that the email address is of
> the correct style - if either of these rules are invalid, the
> Validator would return ValidationMessage instances inside a
> ValidationResult). If validation fails the user is shown the text
> out of the ValidationMessage feedback, otherwise the form would
> submit as per usual. This validation may happen at a number of times
> (during form submission, when focus is lost, as a key is typed,
> etc). The nice thing about this approach is that the Validator can
> be a part of the domain model, the presentation model, or a separate
> thing altogether.
> * The JSR-303 approach which uses annotations to indicate the rules
> applicable to each field. These annotations are on the domain model,
> and therefore assumes that the form is directly tied to a domain
> object (which may not always be correct). I think the JSR-303 API is
> too complex for what is needed in JavaFX, but a similar
> implementation could be developed with a simpler API that follows
> this approach.
> * For lack of a better reference point, the FXForm approach  which
> encapsulates the validation inside a Form object that can be placed
> in the scene. I know this isn't explicitly (in the case of FXForm)
> about validation, but I think it is another approach to consider.
> So, what does JavaFX need out of a validation framework? It's really
> five things (I think):
> 1. A way for developers to validate a form by providing some means of
> specifying rules, as well as a way to specify when it runs, how it
> is visually represented, etc.
> 2. A way for the validation to impact upon the visual state of the form
> (using consistent CSS pseudoclass states / style classes, as well as
> by showing custom overlays, error messages beside the component (or
> grouped together at the top of the form)). There must be API to
> specify all of this.
> 3. Convenient API to simplify the validation process  (e.g.
> isEmpty(String), isAlphanumeric(String), etc, etc, etc).
> 4. An API that does not require it be integrated with UI controls.
> Doing so would prevent 3rd party UI controls to be able to be
> validated without also implementing the API, which may prove
> burdensome. Instead, the validation API should be separate.
> 5. A means to integrate nicely with the bindings and properties API
> present in JavaFX today.
> Of the three approaches above, my personal preference is to follow the
> JGoodies approach as I think it is the most powerful and flexible.
> However, nothing is set in stone and I want to learn what others think.
> Note that at present this research does not extend to considering
> whether there should be API related to automatically generating a form
> from a (JavaFX) bean (and making use of the validation API to ensure the
> input is correct). However, I am not against discussing this topic as
> well, as long as it too integrates nicely with the rules above, as well
> as the validation API itself, obviously. This research may full into
> requirement three above.
>  http://www.jgoodies.com/freeware/libraries/validation/
>  https://github.com/dooApp/FXForm2
> -- Jonathan
More information about the openjfx-dev