2
我必須得到請求參數中的兩個日期,比如說"from=jan 1 2016"
和"to= feb 1 2016"
。 "from"
應始終在"to"
之前。在Java Web應用程序中處理無效請求的方法?
我的控制器方法返回Map
響應如果"from"
爲"to"
前,但如果"to=jan 1 2016"
價值來自"from=feb 1 2016"
之前,我該如何處理髮送消息的反應如何?
我必須得到請求參數中的兩個日期,比如說"from=jan 1 2016"
和"to= feb 1 2016"
。 "from"
應始終在"to"
之前。在Java Web應用程序中處理無效請求的方法?
我的控制器方法返回Map
響應如果"from"
爲"to"
前,但如果"to=jan 1 2016"
價值來自"from=feb 1 2016"
之前,我該如何處理髮送消息的反應如何?
正確的方法是拋出異常,如果發生任何不該發生的事情。如果您使用的是Java 8時API(或類似的東西喬達時間),你可以很容易地通過使用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
小號LocalDate
類型。
發佈你到目前爲止做了什麼.. – FuSsA
dateFrom.compare(dateTo)= -1(from to)。所以你必須實現比較方法。 –
Zorglube
你能顯示一些代碼嗎?理解事情對我們會更好。 –