2011-07-27 6 views
0

私は、スプリングとフリーメーカのパスワードバリデータを書き込もうとしています。 BindingResultはエラーを表示しますが、表示されません - spring.status.errorMessages?sizeは0を返します。Validatorは正しいパスワードを取得しました。 PasswordFormはパスワードを持つJavaクラスです。私は断片の下に置く。形態でフリーメーカの検証エラー

入力:

<tr> 
    <td><@m.formPassword path='passwordForm.passwordOld' label='user.passwordOld' classes='' attr=''/></td> 
    <td><@m.fieldErr /></td> 
</tr> 

メートル:macros.ftlから

"macros.ftl" as m 

使用されるマクロ:

<#macro fieldErr> 
<#if (spring.status.errorMessages?size > 0)> 
<label> blaaad</label> 
</#if> 
<label> size=${spring.status.errorMessages?size}</label> 
</#macro> 

<#macro formPassword path label='' classes='' attr='' required=false> 
<@spring.bind "${path}" /> 
<#assign error = '' /> 
<#if (spring.status.errorMessages?size > 0)> 
<#assign error = 'err' /></#if> 
<#if label??> 
<br/> 
<label class="inputLabel ${error} <#if required>required </#if>"><@spring.message code="${label}" /></label> 
</#if> 
<@spring.formPasswordInput path="${path}" attributes='class="inputText ${classes} ${error}" AUTOCOMPLETE="off" ' /> 
<#if (spring.status.errorMessages?size > 0)> 
    <span class="err">${spring.status.errorMessage}</span> 
</#if> 
</#macro> 

コントローラー:

@RequestMapping(method = RequestMethod.POST) 
public String onSubmit( 
     @ModelAttribute("passwordForm") PasswordForm passwordForm, 
     BindingResult result, 
     ModelMap model, 
     SessionStatus sessionStatus, 
     HttpSession session) { 


    passwordValidator.validate(passwordForm, result); 


    if(result.hasErrors()) 
     return redirect(view); 


    return redirect(View.MAIN); 
} 

バリ:

@Override 
public void validate(Object target, Errors errors) { 

    PasswordForm passwordForm = (PasswordForm) target; 
    String passwordOld = passwordForm.getPasswordOld(); 
    String passwordNew = passwordForm.getPasswordNew(); 
    String passwordNewRepeat = passwordForm.getPasswordNewRepeat(); 

    if (StringUtils.isBlank(passwordOld)) { 
     errors.rejectValue("passwordOld", "password.blank"); 
    } 


    if (!StringUtils.equals(passwordNew, passwordNewRepeat)) { 
     errors.rejectValue("passwordNewRepeat", "password.notmatch"); 
     errors.rejectValue("passwordNew", "password.notmatch"); 
    } 

} 

誰でも助けることができますか?コンソールにエラーは表示されません。

+0

解決済み。私はonSubmitメソッドで間違ったリダイレクトを行います。 – mmmar123

答えて

0

あなたのコード:

if(result.hasErrors()) 
     return redirect(view); 

新しい要求にリダイレクトするように見えます。あなたはリダイレクトしないでください。リダイレクトなしで直接ビューを返さなければなりません。


は、同様の問題にmy answerを見てください。これは、リダイレクトを使用するタイミングと、ビューを直接返すタイミングを示します。