Yes, in ModelDriven, any incoming parameter that is "settable" on the model will be set, regardless of whether its valid or not, which can easily leave an object in a dirty and invalid state. (By settable I mean -- is type compatible after any type conversion that is invoked).
There are two constraining requirements:
a) validation should be atomic, domain objects should not be left in an invalid state
b) user interface guidelines tend to require re-presenting the invalid data for correction rather than throwing it away.
Creating a validation system, that can work with an unmodified model object backing the form, is going to be extremely hard.
In my opinion a solution would start to look like
a) Something like the current struts 2 validations/model driven
b) a set of two reflection generated hash maps
--1) <
String,String> (fieldName -> rawValue)
--2) <String,Object> (fieldName -> typeConverted value using the model object to determine field type)
c) some proxy-type object that wraps all of these together and is exposed to the Action and View
Now you can potentially create a system where you can run the validation against the b.2. values and on success push them atomicly into a.
If it fails, a. isn't updated, but you still have access to either the raw or type-converted inputs to redisplay. Of course some XSS protection might be needed to protect against the redisplay of b.1/b.2 values in certain cases.