Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

Ystark

J'utilise Spring Framework pour mon API de services et org.joda.time.DateTimepour 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 Stringet à 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 patternchaî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 dateOptionalTimeformat? Puis-je appliquer plusieurs modèles pour implémenter cela?

divinedragon

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' @Componentannotation 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.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

TOP liste

  1. 1

    Microsoft.WebApplication.targets

  2. 2

    Exporter la table de l'arborescence vers CSV avec mise en forme

  3. 3

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  4. 4

    Comment analyser un hachage Ruby plat en un hachage imbriqué?

  5. 5

    Passer la taille d'un tableau 2D à une fonction ?

  6. 6

    Comment créer une nouvelle application dans Dropbox avec des autorisations complètes

  7. 7

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  8. 8

    Laravel SQLSTATE [HY000] [1049] Base de données inconnue 'previous_db_name'

  9. 9

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  10. 10

    php ajouter et fusionner des données de deux tables

  11. 11

    Créer un système Buzzer à l'aide de python

  12. 12

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  13. 13

    Comment changer la couleur de la police dans R?

  14. 14

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  15. 15

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  16. 16

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  17. 17

    comment afficher un bouton au-dessus d'un autre élément ?

  18. 18

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  19. 19

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  20. 20

    optimiser les opérations du serveur avec elasticsearch: traitement des filigranes de disque bas

  21. 21

    Comment analyser un fichier avec un tableau d'objets JSON en utilisant Node.js?

chaudétiquette

Archive