代わりに、コンストラクタを使用しており、この種のもの与え無視します。私は、私は文字列を取るコンストラクタを削除しない限り、登録されたプロパティエディタが呼び出されていなかったことがわかっSpring MVCのは、PropertyEditorは設定され、春3.1を使用して
class Thing {
public Thing() {}
public Thing(String someProperty) {}
}
class ThingEditor extends PropertyEditorSupport{
@Override
public void setAsText(String text) {
if (text != null) {
Thing thing = new Thing(text); // or by using a setter method
setValue(thing);
}
}
}
class SomeController {
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(Thing.class, new ThingEditor());
}
}
Thing
- これは正しいですか?
なぜこれを実行して登録されたエディタを無視し、これをやりなおすことができますか?
あなたは上記いるsetAsText方法のもう少しを示してくださいすることができます。 –
更新されましたが、このメソッドの内容は問題ではありません。デバッグ時には、クラスにStringコンストラクタがある場合、このメソッドには絶対に入りません。 – blank
は、おそらくあなたは「someProperty」と同じ名前のフィールドを提出しているので、その場合には、「シング」オブジェクトを作成するために、バインダーを呼び出しますが、セッターまたはプロパティを設定するためのコンストラクタを使用することはできません。名前の "物"でプロパティを提出し、明示的に@RequestParam(..)を置く方が良いかもしれませんが、これはバインダーを強制するかもしれません。 –