首页 > 解决方案 > 绑定可为空的参数

问题描述

考虑以下(简化)形式

<form id="simple-form" action="/requests" method="post" enctype="multipart/form-data" >
    <input type="hidden" name="providerId" value="{{providerId}}" />

    <button type="submit">Submit</button>
</form>

当此表单提交时没有提供 providerId 值,如果方法参数是 Optional,则正确绑定

@Post(uri="/requests", consumes=MediaType.MULTIPART_FORM_DATA)
@Transactional
public HttpResponse doSimple(@Body Optional<Long> providerId) {
    ...
}

但如果我使用@Nullable 注释则失败(带有此错误消息:“无法为值 [] 转换参数 [providerId],原因是:对于输入字符串:\"\"")

@Post(uri="/requests", consumes=MediaType.MULTIPART_FORM_DATA)
@Transactional
public HttpResponse doSimple(@Body @Nullable Long providerId) {
    ...
}

他们不应该采取同样的行动吗?

提前感谢您的建议。

标签: micronaut

解决方案


推荐阅读