You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Balázs Palcsó (JIRA)" <ji...@apache.org> on 2013/12/07 17:12:35 UTC

[jira] [Created] (TAP5-2254) BeanEditForm autofocus issue with JSR 303 validaiton mixed with tapestry validation

Balázs Palcsó created TAP5-2254:
-----------------------------------

             Summary: BeanEditForm autofocus issue with JSR 303 validaiton mixed with tapestry validation
                 Key: TAP5-2254
                 URL: https://issues.apache.org/jira/browse/TAP5-2254
             Project: Tapestry 5
          Issue Type: Bug
          Components: tapestry-core
    Affects Versions: 5.4
            Reporter: Balázs Palcsó


I have the following BeanEditForm:

{code}
<t:beaneditform t:id="userRegistrationForm" t:object="user" t:submitLabel="${message:registrationButton-label}"
include="username,lastName,firstName,email,phone,password,confirmPassword,newsletter">
</t:beaneditform>
{code}

Backed by a User class with these properties:
{code}
@NotNull
@NotBlank
@Size(min = 3, max = 30)
private String firstName;

@NotNull
@NotBlank
@Size(min = 3, max = 30)
private String lastName;

@NotNull
@NotBlank
@Size(min = 3, max = 20)
@Pattern(regexp = ValidationConstants.USERNAME_REGEXP, message = "{com.ajanlatotkapok.user.User.username-pattern-message}")
private String username;

@NotNull
@NotBlank
@Email
private String email;

@Pattern(regexp = ValidationConstants.PHONE_NUMBER_REGEXP, message = "{phone-regexp-message}")
@Size(min = 9, max = 20)
private String phone;

@Validate("password")
@Transient
private String password;

@Validate("password")
@Transient
private String confirmPassword;
{code}

The definition of @Validate("password") which makes the password field the first required field in the form (and making it to owner of the focus on the form)

{code}
@Contribute(ValidatorMacro.class)
public static void combinePasswordValidators(final MappedConfiguration<String, String> configuration) {
    configuration.add("password", "required,minlength=5,maxlength=50,regexp=" + ValidationConstants.PASSWORD_REGEXP);
}
{code}

It seems that only tapestry's @Validate fields are considered when determining which field of the BeanEditForm is the first required field on the form ignoring @NotNull and @NotBlank JSR-303 annotations.

As a workaround I can annotate all required fields with @Validate("required"), though I would prefer to stick with only JSR-303 where I can.



--
This message was sent by Atlassian JIRA
(v6.1#6144)