Spring MVC Spring @PostMapping强制表单数据urlencode为空值?

9lowa7mx  于 2022-11-14  发布在  Spring
关注(0)|答案(1)|浏览(102)
@RestController
public class TestController {
    @PostMapping("/test")
    public void test(TestFilter test) {
       System.out.println(test.id != null);         //true
       System.out.println(test.origin == null);      //false
       System.out.println(test.destination == null); //false
    }
}

public class TestFilter {
    public String id;
    public String origin;
    public String destination;
}

当我运行以下请求时,收到的对象中的值不是null,而是""空:

curl --location --request POST 'localhost:8080/test' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'id=1' \
--data-urlencode 'origin=' \
--data-urlencode 'destination='

问:我怎样才能告诉Spring不要在String上添加空值,而是保留它们null

h7appiyu

h7appiyu1#

可按如下方法求解:

@ControllerAdvice
public class StringTrimAdvice {
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
    }
}

这会将任何空字串转换为null。

相关问题