我有一个带有可选@RequestBody
参数的Rest Controller,如果用户没有指定它我想初始化。现在我这样做了:
@PostMapping
public ResponseEntity<Page<?>> findAll(
@RequestBody(required=false) MyRequest request,
Pageable pageable
) {
if (request == null) {
request = new MyRequest();
}
...
}
是否有任何自动方式告诉Spring MVC,如果参数为null,它必须创建一个新对象?
答案 0 :(得分:0)
我没有完全控制Spring,但我认为没有一种自动方式来初始化像这样的对象。如果正文为空,则消息转换器初始化具有null
值的对象。这就是为什么你有NPE
的原因。
您可以使用Java 8 Optional<Myrequest>
,即使我在这种情况下从不使用它,我也很想知道消息转换器如何处理这种情况。如果你测试它,请告诉我。
答案 1 :(得分:0)
请记住@RequestBody
调用MyRequest
的空构造函数。因此request
将始终引用该类的实例。
结论:request == null
或request.equals(null)
无法评估为真。