For field validations we wanted to avoid the implementation of validation duplicated and spread out over several layers of code.
The right place for validation code would be in the business layer. Actually with plain its more of markup than actual code. What we did was to make an interface for validation attributes to implement. When you need to know if your object is in a valid state, you can ask plain and it will pick up your validation attributes and validate your object. This can be done from your user interface layer or anywhere else you might need it.
As plain just needs you to implement an interface there is no limitation to what kind of validations you can create and have plain use to validate your objects.
We are currently working on a way to define validation messages for each validation and a way to have UI use the validations directly on input fields.