You can find the full source code for this website in the Seam package in the directory /examples/wiki. It is licensed under the LGPL.
Hibernate Validator collects all validation failures that occur prior to a persistence operation and stores them inside of the exception that it throws. Therefore, in your business method, you simply have to catch this exception and turn each violation into a JSF message:
try
{
return super.persist();
}
catch (org.hibernate.validator.InvalidStateException ex)
{
for (org.hibernate.validator.InvalidValue iv : ex.getInvalidValues())
{
org.jboss.seam.faces.FacesMessages.instance().add(iv.getMessage());
}
return "invalid";
}
You can also inspect the InvalidValue for the property name if you want to associate the message with a clientId, but you don't have the full property path, so how well that will work depends on your situation.