2011-12-07 48 views
1

私のアプリケーションには、必須のチェックボックス付きの登録ページがあります。チェックボックスにチェックを入れずにフォームを送信すると、フォームを送信しようとするとエラーメッセージが表示されます。私のコントローラでrejectValueとjspで使用します。 spring3 mvc; jsp;

、私が持っている:

if(req.getParameter("tcCheck")==null) 
    result.rejectValue("tcCheck","Check.tc", "Need to accept terms and conditions"); 

私のjsp:実行時に

<form:form modelAttribute="user" method="post"> 
    ... 
    <form:errors path=tcCheck/> 
    ... 
</form:form> 

を、私はこのエラーを取得する:

Error 500: org.springframework.beans.NotReadablePropertyException: Invalid property 'tcCheck' of bean class [com.domgen.recupl.domain.User]: Bean property 'tcCheck' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

ユーザードメインオブジェクトはありません。そのインスタンス変数の1つとしてtcCheckを使用します。もちろん、User Beanには入れないでください。

ユーザBeanを編集せずにエラーメッセージを表示するにはどうすればいいですか?おかげさまで

答えて

0

errors.rejectValueの使用はいかがですか?サンプルについてはhereを参照してください。お使いのコントローラで

+0

これは私がすでにやって、それが動作しませんでした試みたものです。 –

0

:addError方法をあなたのJSPで

if(req.getParameter("tcCheck")==null) 
    result.addError(new ObjectError("tcCheck", "error message")); 



を使用します。代わりにパスの要素の属性を使用し

<form:form modelAttribute="user" method="post"> 
    ... 
    <form:errors element="tcCheck"/> 
    ... 
</form:form> 

役立ちます!

+0

はこれをやってみました。 '< form:errors element = "some text" /> 'はと同じ結果を生むようです。つまり、すべてのエラーは分離可能ではなく1か所に表示されます。 2ビット以上のエラーと解決策があれば、tcCheckエラーが表示されないようにするためにすべてのエラーが表示されます。 –

0

このようなフォームエラーを使用するには、フォームフィールドに一致するフォームバッキングオブジェクトにゲッターが必要です。あなたは

​​

を使用したい場合ので、あなたのユーザーオブジェクトのメソッドgetTcCheck()、またはユーザーオブジェクトのサブオブジェクトを持っている必要があります。つまり、あなたがrejectValue(「subObject.tcCheck」を、使用している場合には

<form:errors path="subObject.tcCheck"/> 

...

関連する問題