かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Spring Bootで未入力項目をNullにする(バリデーション時に未入力のときはスルーするようにする)

Spring Bootのバリデーションは属性つけるだけで簡単にできます。

5.5. 入力チェック — TERASOLUNA Global Framework Development Guideline 1.0.0.publicreview documentation

上記のページの最後に書いてある内容なのですが、このアノテーションはnull値は基本的にスルーしてくれるのですが、Spring Bootは未入力の項目はnullじゃなくて空文字をせっていしてくれます。そのせいで、未入力はスルーしつつ値が入力されてたら検証したいというシナリオを達成できないのがデフォルトの動きです。

そんなときは、以下のようなメソッドをControllerに生やせばOKみたいです。

   @InitBinder
    public void initBinder(WebDataBinder binder) {
        // 未入力のStringをnullに設定する
        binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
    }

これで未入力の項目はnullになる。