2012-03-07 13 views
1

春にフォームの検証を設定する際に問題があります。spring mvcアプリケーションでjsr-303の検証が有効でない

私はこのような外観を検証したいと思い豆:

public class RegistrationForm extends ProjectXUser { 
@NotEmpty 
private String password2; 

@NotBlank 
@AssertTrue 
private Boolean agreedToConditions; 
... 

ProjectXUserも注釈を付けているいくつかのより多くの特性を有しているBaseUserから継承します。

私のコントローラは次のようになります。

@Controller 
public class RegistrationController { 
private static final String REGISTRATION_JSP = "registration"; 

@ModelAttribute("registrationForm") 
public RegistrationForm getRegistrationForm() { 
    return new RegistrationForm(); 
} 

@RequestMapping(value = { "/registratie/jaar", "registratie/proef" }, method = RequestMethod.GET) 
public String year() { 
    return "registration"; 
} 

@RequestMapping(value = { "/registratie/jaar", "registratie/proef" }, method = RequestMethod.POST) 
public ModelAndView register(@Valid RegistrationForm registrationForm, BindingResult result) { 
    if (result.hasErrors()) { 
    return new ModelAndView(REGISTRATION_JSP); 
    } else { 
    return new ModelAndView("redirect:/registratie/success"); 
    } 
} 
} 

私の春の設定ファイルには含まれています

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" /> 
<mvc:annotation-driven /> 

を私は、JSR-303のバリデータはクラスに存在している場合は、その春のドキュメントで読みましたそれを自動的に検出して使用します。だから、私はpomにhibernate-validatorを追加しました。

私のコントローラをデバッグするとき、私が記入した値がregistrationFormに含まれているのがわかりますが、結果には常に0エラーがあります。私がフォームフィールドに間違った入力を明示的に入力したとしても。

+0

@Controllerが動作するようにを使用していますが、スキャンされたパッケージのRegistrationFormクラスですか? –

+0

はい私はを使用しています。それはorg.x.yをスキャンし、私のRegistrationFormはorg.x.y.web.formsにあります。それはそれを拾う必要があります。 –

+0

'validator.validate(registrationForm)'で手作業で検証するとうまくいきますか? – tbruyelle

答えて

0

あなたのコードのこのビットは、その後、あなたのJSR-303検証がピックアップされて戻ってあなたの登録ページへ

if (result.hasErrors()) { 
    return new ModelAndView(REGISTRATION_JSP); 
} 

を発射し、リダイレクトされた場合。あなたはcssClass="error"は、あなたがエラーを表示したいCSSでこの

<form:errors path="password2" cssClass="error" /> 

のようなあなたのJSPページでエラーを表示する必要があります。自動的に<div>に入れられます。

関連する問題