かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

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