かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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になる。