我可以在请求参数对象中使用Optional(Optional可能始终不为null)吗?

时间:2017-04-22 13:24:20

标签: java spring

我正在尝试在请求参数对象中使用Java 8的Optional。有没有办法保证Optional的值不为空,即使请求中没有定义参数?

在以下示例中,如果给出value,则没有问题。 但是,如果请求中没有定义value,则抛出空指针异常,因为requestDto.value为空。

@Controller
public class MyController {

    @RequestMapping("/test")
    @ResponseBody
    public String doTest(RequestDto requestDto) {
        return requestDto.getValue().orElse("it doesn't exist");
    }

    public static class RequestDto {

        private Optional<String> value;

        public Optional<String> getValue() {
            return value;
        }

        public void setValue(Optional<String> value) {
            this.value = value;
        }

    }
}

在一个工作示例中,如果没有使用对象,则在请求中未定义value时没有问题:

@Controller
public class MyController {

    @RequestMapping("/test")
    @ResponseBody
    public String doTest(@RequestParam("value") Optional<String> value) {
        return value.orElse("it doesn't exist");
    }

}

0 个答案:

没有答案