我试图用kotlin做一个Spring MVC RestController, 但是我在LocalDatetime的RequestParams上遇到了困难
@GetMapping
fun getParams(@RequestParam(required = true) endDate: LocalDateTime)
如果我未指定参数localhost:8080/
,则会出现一个可以在ControllerAdvice中捕获的错误,但是如果我指定一个空值localhost:8080/endDate=
,它将给我
java.lang.IllegalArgumentException: Parameter specified as non-null is null: method net.agroop.deviceapi.controllers.DeviceController.getAirParams, parameter endDate
我认为没有办法在ControllerAdvice中捕获该错误,因为它是kotlin错误。
我尝试使用其他类型(例如Date),但它也给出了错误。如果我使用String,那么它可以工作,因为String可以为空。 另外,如果我指定LocalDateTime?可以为空,但是可以,但是我必须在每个RequestMapping中而不是ControllerAdvice中捕获Controller中的错误。
答案 0 :(得分:0)
我自己弄清楚了。
只需拥有一个 window.onload(function()
{
response.sendRedirect(url);
// or
simpleAjaxReq("formatter_main.php",'file_close' ,
'false');
}
组件即可处理日期转换
Converter<S, T>
现在我可以使用以下方式处理异常了:
@Component
class LocalDateConverter : Converter<String, LocalDateTime> {
override fun convert(source: String): LocalDateTime = LocalDateTime.parse(source, DateTimeFormatter.ISO_DATE_TIME)
}
答案 1 :(得分:0)
要摆脱异常,只需将模型的属性设置为空,即endDate: LocalDateTime?
@GetMapping
fun getParams(@RequestParam(required = true) endDate: LocalDateTime?)
要验证空值,可以在data class
和@field:NotEmpty
中使用Hibernate Validator。
GL