Tem como tratar uma Constraint Unique com o Hibernate Validator, para exibir alguma mensagem ao invés de uma página de erro ? Por exemplo o campo USERNAME da tabela usuários.
Valew.
Tem como tratar uma Constraint Unique com o Hibernate Validator, para exibir alguma mensagem ao invés de uma página de erro ? Por exemplo o campo USERNAME da tabela usuários.
Valew.
Velho, o jeito que pensei é que vc poderia criar um Annotation sua, para o hibernate validator, vc que tem que implementar uma interface Validator acho e criar a annotation apontando qual classe é responsável pela validacao. Nessa annotation vc poderia testar a unicidade do campo que esta atualizado e dar sua mensagem personalizada. Por sinal acho que vou fazer isso.
Alberto
[quote=alots_ssa]Velho, o jeito que pensei é que vc poderia criar um Annotation sua, para o hibernate validator, vc que tem que implementar uma interface Validator acho e criar a annotation apontando qual classe é responsável pela validacao. Nessa annotation vc poderia testar a unicidade do campo que esta atualizado e dar sua mensagem personalizada. Por sinal acho que vou fazer isso.
Alberto[/quote]
Teria algum exemplo ou pode indicar onde posso achar algo que me ensine o caminho das pedras ?
Valew.
Annotation
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.hibernate.validator.ValidatorClass;
import beanvalidator.validations.validator.RequiredValidator;
@ValidatorClass(RequiredValidator.class)
@Target(value={ElementType.FIELD,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Required {
String message() default "{validator.required}";
}
Classe:
public class RequiredValidator implements org.hibernate.validator.Validator<Required>,PropertyConstraint,Serializable {
public void initialize(Required arg0) {
// TODO Auto-generated method stub
}
public boolean isValid(Object value) {
// TODO Auto-generated method stub
boolean resultado = false;
if(value==null){
return resultado;
}
if(value instanceof String){
String stringValue = (String)value;
if(stringValue.trim().equals("")){
return resultado;
}
else{
resultado = true;
}
}
else{
if ( value.getClass().isArray() ) {
return Array.getLength( value ) > 0;
}
else if ( value instanceof Collection ) {
return ( (Collection) value ).size() > 0;
}
else if ( value instanceof Map ) {
return ( (Map) value ).size() > 0;
}
}
return resultado;
}
/**
* Copiei este metodo do NotEmptyValidator, pois vejo a mesma aplicabilidade.
*/
@SuppressWarnings("unchecked")
public void apply(Property property) {
if ( ! ( property.getPersistentClass() instanceof SingleTableSubclass )
&& ! ( property.getValue() instanceof Collection ) ) {
//single table should not be forced to null
if ( !property.isComposite() ) { //composite should not add not-null on all columns
Iterator<Column> iter = (Iterator<Column>) property.getColumnIterator();
while ( iter.hasNext() ) {
iter.next().setNullable( false );
}
}
}
}
Espero que ajude.
Alberto