This is a really interesting question 
The Binding infrastructure (OOTB) works best if you are binding onto a Bean (i.e. with accessors), but that doesn't work at all well with the idea of immutable objects, or self validating objects.
Some workarounds are to model the *request for a new object* as an independant object, with accessors and validators, and then provide a factory (or constructor) which takes in the RequestForNewObject and returns the immutable domain object.
So:
Code:
class RequestForNewObject {
private String name;
private String address;
....
... accessors
}
class MyDomainObject {
public MyDomainObject(RequestForNewObject object) {
}
}
getters...
Introspection and validation can be done straight onto RequestForNewObject and you *know* that your domain objects will always be intact because you don't create/update them until you have sane data.