Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Boot Java Discussion :

filtrer une valeur de champs ?


Sujet :

Spring Boot Java

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    août 2008
    Messages
    1 101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2008
    Messages : 1 101
    Points : 521
    Points
    521
    Par défaut filtrer une valeur de champs ?
    Bonjour, comment demandé à spring boot de ne pas donnée le contenu d'un champs ?

    voici une requête simple http que je demande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://192.168.1.1:8822/pageHtmls
    voici la réponse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    {
      "_embedded" : {
        "pageHtmls" : [ {
          "titre" : "titre ...",
          "contentHtml" : "2 novembre",
          "img" : "https://test.fr/depot/casserol.jpg",
          "routePublication" : "aquarel",
          "_links" : {
            "self" : {
              "href" : "http://192.168.1.60:6622/pageHtmls/5dcb9044adfe755d8575de78"
            },
            "pageHtml" : {
              "href" : "http://192.168.1.60:6622/pageHtmls/5dcb9044adfe755d8575de78"
            }
          }
        }, {
    ici le contentHtml n'est qu'une chaine de caractère:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
          "contentHtml" : "2 novembre",
    mais à l'intérieur je mets aussi des images encodés qui peuvent être lourde en taille, j'aimerais donc demandé à spring boot de ne pas donner ce champs ,
    ici on attaque du nosql mongodb, pour avoir ce champs il me faudra donner le numéro de la collection.

    par exemple avec cette requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://192.168.1.60:6622/pageHtmls/5dcb9044adfe755d8575de78
    merci d'avance de vos réponses

  2. #2
    Membre averti Avatar de Kazh Du
    Homme Profil pro
    Développeur Java
    Inscrit en
    novembre 2011
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2011
    Messages : 121
    Points : 418
    Points
    418
    Par défaut
    Bonjour,

    Tu peux utiliser un objet de retour (DTO) spécifique qui ne contient pas le champs en question ou alors utiliser l'annotation @JsonIgnore sur celui-ci (ou son getter).
    D'une façon générale, exposer directement tes entités est problématique et source de conflits.
    Merci d'ajouter un sur les tags qui vous ont aidé

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    août 2008
    Messages
    1 101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2008
    Messages : 1 101
    Points : 521
    Points
    521
    Par défaut
    merci de ta réponse

    j'ai donc essayer json ignore:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       // @JsonIgnore
        public String getcontentHtml() {
            return null;
            //return this.contentHtml;
        }
    est cela fonctionne bien j'ai caché le contentHtml.

    Par contre j'ai tenté le DTO mais je me retrouve avec des résultats vide ?

    voici l'entité pagehtml:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
    @Document
    @Data @AllArgsConstructor @NoArgsConstructor 
    public class PageHtml {
     
        @Id
        private String id; //id est le numéro de sommaire id
        private String titre;
        private String contentHtml;
        private String img;
        private String routePublication;
     
    }
     
    }

    voici pagehtml DTO:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    @Document
    @Data @AllArgsConstructor @NoArgsConstructor 
    public class PageHtmlDto {
     
        @Id
        private String id; //id est le numéro de sommaire id
        private String titre;
        private String img;
        private String routePublication;
     
     
     
    }

    voici mon service:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     
    @RestController
    public class PageHtmlService {
     
      @Autowired
      PageHtmlRepository PageHtmlRepository;
     
      @Autowired
      private ModelMapper modelMapper;
     
      public String countRouteMatiere(@RequestParam("routeMatiere") String routeMatiere) {
        return "nombre de route de cette matiere" + PageHtmlRepository.countByRoutePublication(routeMatiere);
      }
     
      @GetMapping(value = "/page/{id}")
      public @ResponseBody PageHtmlDto getOrder(@PathVariable("id") String id) {
        Optional<PageHtml> page = PageHtmlRepository.findById(id);
     
        PageHtmlDto PageHtmlDto = modelMapper.map(page,PageHtmlDto.class);
        System.out.println(PageHtmlDto);
        return  PageHtmlDto;
      }
     
    }

    le résultat de tout les attributs sont à null ?

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {"id":null,"titre":null,"img":null,"routePublication":null}

    je n'ai pas d'erreur générer à cette ligne ? par contre la variable page à bien quelque chose

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        System.out.println(page); // Optional[PageHtml(id=5dc9092d3cce2c6bde908e62, titre=titre ..., contentHtml=2 novembre,
        PageHtmlDto PageHtmlDto = modelMapper.map(page,PageHtmlDto.class);

    finalement j'ai trouvé une solution plus simple, je copie la repository, je supprime son attribut que ne ne souhaite pas affiché , et je modifie le type que je souhaite avoir

    Code "java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       public List<BookodPageHtmlDTO> findByroutePublication(@Param("rt") String routePublication);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 22/05/2006, 10h17
  2. Trier sur une valeur de champs et non sur le nom du champs
    Par kamalkam dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/05/2006, 18h41
  3. Réponses: 2
    Dernier message: 09/04/2006, 11h45
  4. Réponses: 3
    Dernier message: 04/04/2006, 10h39
  5. [MySQL] Pb d'insertion d'une valeur de champ select dans une Bdd
    Par ptinicola dans le forum PHP & Base de données
    Réponses: 20
    Dernier message: 20/10/2005, 19h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo