0

何らかの理由で検証エラーが表示されません。実際、バインディングの結果はエラーを返しません。私の豆は次のとおりです。

@NotBlank
@Size(min = 5, max = 20, message = "User ID must be 5 to 20 characters long.")
@Pattern(regexp = "^[a-zA-Z0-9]+$", message = "User ID must be alphanumeric.")
public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

@NotBlank
@Size(min = 6, max = 20, message = "The password must be between 6 to 20 characters long.")
public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

私のコントローラークラスには次の変数があります:

private BeanValidator beanValidator = new BeanValidator(new AnnotationBeanValidationConfigurationLoader());

コントローラーには、バインディングを処理するメソッドがあります。

beanValidator.validate(userLogin, bindingResult);

if(bindingResult.hasErrors()) {
    return "/";
}
else 
    return "/homepage";

ユーザー名とパスワードの値に空白の資格情報を使用してログインすると、システムがログインします。明らかに、bindingResult はエラーを検出していません。ヘルプ?

4

1 に答える 1

0

@Valid独自のバリデーターを実装する代わりに使用しました。また、パラメーターは次の順序にする必要があります。

public String homepage(@ModelAttribute(value="userLogin") @Valid UserLogin userLogin, BindingResult bindingResult, Model model) {//your code}

@ValidBean パラメータとパラメータの順序に注意してBindingResultください。BindingResultパラメータの後に配置する必要が@Validあります。そうしないと、エラーが表示されます。

于 2013-05-03T13:55:36.020 に答える