Hello,
I'm using Tapestry 5.4 beta 27 on java 1.7.0_76 with Windows 8.1.
I'm not sure this is the right place where describe a potential bug.
I put my very simplified class.
I have an entity with two Date fields:
@Entity
@Table(name = "testparent", schema = "phoenix")
public class TestParent implements Serializable{
@Property
@ValidateDb (name="V1")
@Column(name = "F7dateReq")
public Date f7datereq;
@Property
@ValidateDb (name="V2")
@Column(name = "F14datetimeReq")
public Date f14datetimeReq;
}
and a custom ValidateDb ConstraintValidator that ensure that date values
are mandatory:
@Constraint(validatedBy = ValidateDbValidator.class)
@Target({ METHOD, FIELD, ANNOTATION_TYPE})
@Retention(RUNTIME)
@Documented
public @interface ValidateDb {
String message() default "{com.acme.constraint.Range.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
String name() default "";
}
public class ValidateDbValidator implements ConstraintValidator<ValidateDb,
Object> {
@Override
public void initialize(ValidateDb constraintAnnotation) {
}
public boolean isValid(Object value, ConstraintValidatorContext
context) {
String errorMessage=null;
if (value==null)
errorMessage="{validateDb.constraint.notNull}";
context.disableDefaultConstraintViolation();
if (errorMessage==null || "".equals(errorMessage.trim()))
{
context.buildConstraintViolationWithTemplate("").addConstraintViolation();
return true;
}
else
{
context.buildConstraintViolationWithTemplate(errorMessage).addConstraintViolation();
return false;
}
}
}
I'm using the standard bean edit form and when I press the "Save" button,
the alert message appears in this way
[image: Immagine in linea 1]
In other words I get just one message referring the wrong input component
while I should get two distinct error messages, one for each field.
If I use two String fields instead of date fields, the messages are right
[image: Immagine in linea 2]