Re: Validating form inputs?
Daniel Pitts wrote:
Davej wrote:
I have been thinking about the way I have been validating form inputs
in the servelet [sic] and wonder if I would be much better off using class
methods to verify these inputs?
What exactly do you mean by "class methods"? Do you mean 'static' member methods?
Consider that I am almost always gathering the inputs to instantiate
one or more objects, but I gather and validate -- and then
instantiate. Maybe I should instantiate an empty object and then use
class methods to validate the inputs?
Maybe. It depends on what you mean by "class methods".
There are a few frameworks that do this in several phases actually. Its
called binding and validating.
In the binding phase, values are parsed into appropriate data types, and
stored in the model (Form object as it is sometimes called). If the
data can not be parsed, or the model rejects the value immediately, it
is a binding error.
In the validation phase, the values are checked for correctness. This is
often a secondary phase because some values are interdependent.
If, after validation, you want to have an immutable object, then you
could treat your Form object more as a Builder object, and have it
construct the Real object, which is fully populated and validated.
Alternatively, you could use the Form object as a "Parameter" object for
a different Builder class, to keep the concerns of the Form object more
pure.
I suggest looking into different frameworks, rather than trying to
roll-your-own. There are a lot of gotchas that can be avoided, and
boilerplate code you can rid yourself of. I've had moderate luck with
Spring Binding. If you have typical use-cases it works well. If you
have more complicated forms, for instance complex dynamic items, then
there is some shoehorning needed to make it work correctly.
Rolling your own isn't actually that hard, but you won't get the breadth, depth or solidity of a framework with thousands of manhours invested in it already. Then again, you might not need all that.
There are plenty of better frameworks out there than Spring. There's JSF, regular old JSP with EL and JSTL, and Struts, to name three.
Your use of the term "class methods", OP, suggests that you need to study Java some more, and likely also servlets and presentation technologies some more. Look up the "Model 2" web-application paradigm. Then go with JSP/EL or JSF/Facelets.
--
Lew