2

カスタムプロパティエディタの登録に問題があります。私はそれをこのように登録します:

class BooleanEditorRegistrar implements PropertyEditorRegistrar {

   public void registerCustomEditors(PropertyEditorRegistry registry) {
      registry.registerCustomEditor(Boolean.class,
         new CustomBooleanEditor(CustomBooleanEditor.VALUE_YES, CustomBooleanEditor.VALUE_NO, false))
      registry.registerCustomEditor(Boolean.class,
         new CustomBooleanEditor(CustomBooleanEditor.VALUE_ON, CustomBooleanEditor.VALUE_OFF, true))
   }
}

しかし、最初のものだけが適用されます。複数登録することはできますか?

4

1 に答える 1

2

クラスごとに設定できるプロパティ エディタは 1 つだけです。Spring の を使用している場合CustomBooleanEditorは、デフォルト値 (「true」/「on」/「yes」/「1」、「false」/「off」/「no」/「0」) のいずれかを使用できます。 arg コンストラクター、または true と false に対してそれぞれ正確に 1 つの文字列。より柔軟なものが必要な場合は、独自のプロパティ エディターを実装する必要があります。例えば:

import org.springframework.beans.propertyeditors.CustomBooleanEditor

class MyBooleanEditor extends CustomBooleanEditor {

    def strings = [
        (VALUE_YES): true, 
        (VALUE_ON): true,
        (VALUE_NO): false,
        (VALUE_OFF): false
    ]

    MyBooleanEditor() {
        super(false)
    }

    void setAsText(String text) {
        def val = strings[text.toLowerCase()]
        if (val != null) {
            setValue(val)
        } else {
            throw new IllegalArgumentException("Invalid boolean value [" + text + "]")
        }
    }
}
于 2012-09-04T16:59:38.483 に答える