gpt4 book ai didi

java - 在 Java Web 应用程序中处理无效请求的方法?

转载 作者:行者123 更新时间:2023-11-30 10:35:26 26 4
gpt4 key购买 nike

我必须在请求参数中获取两个日期,比如 "from=jan 1 2016""to= feb 1 2016"“from” 应始终位于 “to” 之前。

如果 "from""to" 之前,我的 Controller 方法返回 Map 作为响应,但如果 "to=jan 1 2016" 值出现在 "from=feb 1 2016" 之前,如何处理发送消息的响应?

最佳答案

正确的方法是在发生不该发生的事情时抛出异常。如果您使用的是 Java 8 时间 API(或类似 Joda 时间的东西),您可以使用 isBefore() 轻松实现此目的。 :

if (to.isBefore(from)) {
// Write your own exception class
throw new InvalidParameterException("To cannot be before from");
}

现在您可以使用 @ExceptionHandler如果抛出异常,可以做任何你想做的事。例如:

@ExceptionHandler(InvalidParameterException.class)
@ResponseBody
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public ErrorMessageDTO handleInvalidParameter(InvalidParameterException ex) {
// Write your own DTO to return an exception
return new ErrorMessageDTO(ex.getMessage());
}

如果您想使用日期作为请求参数,您可能需要使用 Formatter<LocalDate>正确地做到这一点:

@Component
public class LocalDateStringFormatter implements Formatter<LocalDate> {
// Or use a custom formatter with a custom pattern
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ISO_LOCAL_DATE;

@Override
public LocalDate parse(String isoDateString, Locale locale) throws ParseException {
return LocalDate.parse(text, FORMATTER);
}

@Override
public String print(LocalDate date, Locale locale) {
retun date.format(FORMATTER);
}
}

这样你就可以映射@RequestParam s 类型 LocalDate .

关于java - 在 Java Web 应用程序中处理无效请求的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41145597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com