1 votes

Mappage automatique des champs du formulaire Struts2 vers les champs d'action

J'aimerais savoir si c'est possible, dans Struts2 pour faire correspondre automatiquement les champs d'un formulaire HTML à ceux d'une action, sans getters et setters .

Il est clair que par les getters et setters ou les ParameterAware interface and the Map Les champs peuvent être définis dans l'action, mais je voulais juste savoir s'il y avait un autre moyen.

2voto

leonbloy Points 27119

Premièrement, au lieu de penser en termes de " avec des champs avec getters et setters "il vous est conseillé de penser en termes de " propriétés des haricots " ici. Struts2 (et la plupart des frameworks java) pensent de cette manière, ils ne se soucient généralement pas (et à juste titre) de savoir si ces "propriétés" sont des champs réels ou non.

La réponse courte à votre question est : non.

Mais sachez que Struts2 est très flexible - quand je dis "non", je veux dire "en utilisant les intercepteurs par défaut". Vous pouvez toujours écrire votre propre intercepteur au lieu de celui par défaut pour faire cela - mauvaise idée IMO.

L'intercepteur qui effectue cette mise en correspondance est (fondamentalement) l'intercepteur intercepteur de paramètres . Extrait de sa documentation :

Cet intercepteur reçoit tous les paramètres à partir de ActionContext#getParameters() et les place sur la pile de valeurs en appelant ValueStack#setValue(String, Object) ce qui donne généralement les valeurs suivantes soumises dans une demande de formulaire sont appliquées à une action dans la pile.

Et en regardant dans ValueStack.setValue(String,Object) nous lisons :

Tente de définir un sur une haricot dans la pile avec la valeur donnée en utilisant l'ordre de recherche par par défaut.

Alors voilà.

1voto

hkansal Points 136

ModelDriven était le bon choix :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X