春 3.0 MVC
まず第一に、messages.properties @ springsourceに関するドキュメントは見つかりませんでした 。エラー メッセージのオーバーライドについて見つけたものはすべて、さまざまなフォーラムにあります。誰かがmessages.propertiesが文書化されている場所への参照を持っているなら、それは素晴らしいでしょう. たぶん、messages.properties は春ではなく Java 仕様から来ているのでしょうか?
JSR-303 Type Checking Before Bindingのアドバイスに従ってみました。 私の目標は、いくつかの型の不一致エラー メッセージを独自のユーザー フレンドリーなエラー メッセージに置き換えることです。
私の状況は次のとおりです。
モデル
public class Test {
private int numberbomb;
public int getNumberbomb() {
return numberbomb;
}
public void setNumberbomb(int numberbomb) {
this.numberbomb = numberbomb;
}
}
myservlet.xml
<mvc:annotation-driven/>
jsp
<form:form id="test" method="post" modelAttribute="test">
<form:errors path="*"/>
<form:label path="numberbomb">numberbomb</form:label>
<form:input path="numberbomb"/>
</form:form>
クラス\メッセージ.プロパティ
typeMismatch=bad value you bad bad person
test.numberbomb=you are driving me crazy with these bad inputs
フォームからの出力
タイプ java.lang.String のプロパティ値をプロパティ numberbomb に必要なタイプ int に変換できませんでした。ネストされた例外は org.springframework.core.convert.ConversionFailedException: Unable to convert value "three" to type java.lang.String to type int; です。ネストされた例外は java.lang.NumberFormatException: For input string: "three" です
コントローラー内の BindingResult.toString()
フィールド 'numberbomb' のオブジェクト 'test' のフィールド エラー: 拒否された値 [3]; コード [typeMismatch.test.numberbomb,typeMismatch.numberbomb,typeMismatch.int,typeMismatch]; 引数 [org.springframework.context.support.DefaultMessageSourceResolvable: コード [test.numberbomb,numberbomb]; 引数 []; デフォルトメッセージ [numberbomb]]; デフォルト メッセージ [タイプ 'java.lang.String' のプロパティ値をプロパティ 'numberbomb' の必要なタイプ 'int' に変換できませんでした。ネストされた例外は org.springframework.core.convert.ConversionFailedException: Unable to convert value "three" from type 'java.lang.String' to type 'int'; です。ネストされた例外は java.lang.NumberFormatException: For input string: "three"]
<form:errors>
カスタムエラーメッセージを表示する方法が間違っているエラーメッセージを表示していますか? messages.properties を見るように伝えるために、Spring 構成ファイルに何かを追加する必要がありますか? Spring は、messages.properties ファイル (WEB-INF\classes フォルダーにあります) を無視しているようです。
アイデアをありがとう!