year
私はパラメータとname
:を持つこのフォームを持っています
/register?year=&name=test
私のクラスは次のようになります。
public class Organizer {
private String name;
private int year;
私のコントローラーは、これら2つのパラメーターをクラスにマップしますOrganizer
@RequestMapping("/register")
public String register(@Valid Organizer organizer, BindingResult errors...
問題は、パラメーターyearをintにバインドすることです。春は私にエラーを与えます
タイプ'java.lang.String'のプロパティ値をプロパティ'year'に必要なタイプ'int'に変換できませんでした。ネストされた例外はjava.lang.IllegalArgumentExceptionです。
独自のカスタムプロパティエディタを追加する方法を理解しましたが、getValue()
呼び出されないようです
@InitBinder
public void binder(WebDataBinder binder) {
binder.registerCustomEditor(int.class, new CustomIntEditor());
}
public class CustomIntEditor extends PropertyEditorSupport {
年パラメータが値以外の場合(->例外をキャッチ)にint
値を返すことができると思いました0
int
Integer.parseInt()
@Override
public void setAsText(String text) throws IllegalArgumentException {
//Some parsing and error handling
setValue((int)0);
}
次のことができるようになりたいです。
フィールド
year
をint
値に設定します0
カスタムエラーメッセージを作成します。
organizer.year.invalid