I would typically use spring's JSR-303 support in addition with hibernate-validator. You can override the default messages for different constraint violations or implement your own custom constraints, annotations etc. I have used this with Spring-MVC but I don't really use
JSF all that much. If your question is more JSF specific maybe the moderator can move this post to the JSF forum instead.