我正在尝试在请求参数对象中使用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");
}
}