J'utilise Spring Framework pour mon API de services et org.joda.time.DateTime
pour l'analyse datetime. Plus précisément, j'utilise le ISOFormatter.dateOptionalTimeParser()
, qui donne aux utilisateurs la possibilité d'utiliser uniquement la date, ou à la fois la date et l'heure, ce qui est une exigence.
Croyez-moi, j'ai vu toutes ces questions connexes auxquelles je peux déjà dire que les gens vont me diriger, par exemple ceci et cela , etc.
Auparavant, je prenais la date au fur String
et à mesure , puis je la traitais à l'aide du formateur joda mentionné ci-dessus dans la couche de service, mais maintenant je veux ajouter la validation de la demande dans le contrôleur, ce qui signifie que si la demande est syntaxiquement incorrecte, la demande ne devrait pas même aller à la couche de service.
J'ai essayé d'utiliser plusieurs variantes de @DateTimeFormat(iso = ISO.DATE_TIME)
, ainsi que de spécifier la pattern
chaîne au format sans aucune chance.
@RequestMapping(value = URIConstants.TEST_URL, method = RequestMethod.GET)
public @ResponseBody String getData(@RequestParam(required = false) DateTime from,
@RequestParam(required = false) DateTime to) {
return dataService.fetchDataFromDB(from, to);
}
Que dois-je faire pour m'assurer que la date que je reçois de l'utilisateur est conforme au ISO 8601 dateOptionalTime
format? Puis-je appliquer plusieurs modèles pour implémenter cela?
Vous pouvez également créer un convertisseur et qui s'en chargera. J'ai utilisé OffsetDateTime dans l'exemple ci-dessous, mais cela peut être facilement remplacé par LocalDateTime. Pour un article détaillé, reportez-vous à cette url - http://www.baeldung.com/spring-mvc-custom-data-binder
Même moi, je me débattais avec ça pendant un certain temps et cela ne fonctionnait pas. L'astuce consiste à utiliser l' @Component
annotation et l'a fait pour moi.
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
@Component
public class OffsetDateTimeConverter implements Converter<String, OffsetDateTime> {
@Override
public OffsetDateTime convert(final String source) {
if (source == null || source.isEmpty()) {
return null;
}
return OffsetDateTime.parse(source, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
}
}
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots