编程知识 cdmana.com

Définition des paramètres de type de tableau MVC printanier et comment passer les paramètres à l'avant

Si le paramètre Array est défini dans le corps de la requête(@RequestBody),Le paramètre frontal n'est rien d'autre qu'un tableaujson.
Si le paramètre Array est défini sur le paramètre request(@RequestParam…),Le Ginseng frontal est bizarre.Cet article tente d'énumérerDifférents scénarios de définition des paramètres de transfert de tableauEtComment l'avant - plan devrait - il transmettre les paramètres au moment de la demande.

  • Collection de types simples
    @DeleteMapping("/list")
    public void delete(@RequestParam("ids") Set<String> ids) {
     // String[]、List<Stirng> Même chose.
        ...
    }

DemandeurlExemple:/list?ids=1&ids=2

  • Collection de types d'objets
	@RequestMapping("/list/bean")
    public void beans(@RequestParam("beans") ArrayList<Bean> beans) {
    
        ...
    }
...
class Bean {
    
    String id;
    String name;
    //Omisget set
}

DemandeurlExemple:Le test parent n'a pas pu attribuer de valeur au paramètre!Les étudiants qui ont trouvé un moyen de partager.

  • BeanAttributs de collection de type simple dans
    @RequestMapping("/bean/list")
    public Object beanList(StringListWrapper bean) {
    
        ...
    }
...
class StringListWrapper {
    
    List<String> ids;
    //Omisget set
}

DemandeurlExemple:/bean/list?ids=1&ids=2

  • Bean Propriétés de la collection de types d'objets dans
    @RequestMapping("/bean/list2")
    public Object beanList2(BeanListWrapper bean) {
    
        ...
    }
...
class BeanListWrapper {
    
    List<Bean> beans;
    //Omisget set
}
class Bean {
    
    String id;
    String name;
    //Omisget set
}

DemandeurlExemple:/bean/list2?beans[0].id=1&beans[1].id=2
Parce queurl Les caractères spéciaux ne peuvent pas exister sur , Donc la demande réelle doit être faite URLEncode Codage.’[‘Après codage’%5B’, ‘]‘Après codage’%5D’,Alors... Demande réelle urlPour:/bean/list2?beans%5B0%5D.id=1&beans%5B1%5D.id=2

  • BeanDansBean Propriétés de la collection de types d'objets dans
    @RequestMapping("/bean/list3")
    public Object beanList2(OuterWrapper bean) {
    
        ,,.
    }
...
class OuterWrapper {
    
    BeanListWrapper bean;
    //Omisget set
}
class BeanListWrapper {
    
    List<Bean> beans;
    //Omisget set
}
class Bean {
    
    String id;
    String name;
    //Omisget set
}

DemandeurlExemple:/bean/list3?bean.beans[0].id=1&bean.beans[1].id=2
Ibid., Au moment de la demande réelle URLEncode, Demande réelle urlPour:/bean/list3?bean.beans%5B0%5D.id&bean.beans%5B1%5D.id

Résumé:Attribut via . Désignation,Tableau à travers [] Désignation.

Accent mis:Pour les paramètres de demande,SpringMVCIl soutient également FormFormulaire Obtenir la valeur du paramètre,Alors...,Demande ci - dessusurlDans l'exempleParamètres S'il existe FormFormulaire Vous pouvez également demander le succès !
Par exemple,:urlLe paramètre est /bean/list2?beans[0].id=1&beans[1].id=2
Si utilisé FormPrésentation du formulaire, Le format du message de demande est :

POST /bean/list2  HTTP/1.1
Content-Type: application/x-www-form-urlencoded

beans[0].id=1&beans[1].id=2

Sources pertinentes

  • Logique d'acquisition de l'analyseur de paramètres :org.springframework.web.method.support.HandlerMethodArgumentResolverComposite#getArgumentResolver
  • Analyser les paramètres,Assigner des valeurs aux paramètres:org.springframework.web.method.support.HandlerMethodArgumentResolverComposite#resolveArgument

版权声明
本文为[Markix]所创,转载请带上原文链接,感谢
https://cdmana.com/2022/01/202201080559014955.html

Scroll to Top