Re: Validation in swing using struts-like approach
I am looking for validation method like in struts, where we can
mention all the validation scenarios in an XML or a config file, and
the validation happens as mentioned in that file.
It requries that the validations should be done in the client side
rather than the server side (Like in ActionForm in struts)
Is it possible to have such an approach?
Can I use ActionForm itself in some way for the same?
I am not aware of a pre-existing framework to permit declarative validation
for Swing, but there may well be one.
I don't think ActionForms from Struts will give you a problem as such,
although you probably should not derive them from a Struts class but instead
use your own interface. I have done this myself for a few projects, most of
them from before I learned Struts. What you will not get this way is the
equivalent of the Struts controller servlet, that is, the dispatcher for the
UI event loop.
OTOH, ActionForms aren't inherently connected to declarative validation rules
anyway. That is something that the Struts framework takes care of; it parses
the validation declarations, including custom validation classes if specified,
in terms of predefined validator interfaces and classes within Struts. By the
time the controller invokes your ActionForm (or in more universal terms, the
action handler class), it's already loaded a bunch of classes and has methods
to call them to enforce the rules.
Swing itself follows a Model-View-Controller paradigm, same as Struts. The
rough equivalent to ActionForm is XxxListener. The EDT (Event Dispatch
Thread) is the equivalent of the Struts controller servlet.
It is likely that rich-client frameworks like Eclipse or Netbeans will give
you declarative validation. I am not familiar enough with either as a
rich-client platform to say for sure.
Java generally supports property sheets for JavaBeans, so that would let you
define validation via property files. You still need to define your own
property and value sets, and parse the properties in custom code, but it's not
hard to use beans this way.