Question

J'ai hérité de cette gigantesque application Web Java héritée avec Struts 1.2.4. J'ai une question spécifique concernant ActionForms. Certains d'entre eux n'ont que des propriétés String (même pour les nombres), d'autres utilisent les types apparemment appropriés (Integer, Date, String, etc.). Quelle est la meilleure pratique ici?

De plus, il semble que si une propriété est de type Integer et que la valeur entrée par l'utilisateur n'est pas une valeur entière, Struts l'avale en silence et ne définit simplement pas la propriété. Qu'est-ce qui se passe avec ça?

Était-ce utile?

La solution

Pour Struts 1.2x, les propriétés dans lesquelles l'utilisateur entre ou sélectionne des valeurs dans le formulaire HTML et qui sont renseignées automatiquement dans l'occurrence d'ActionForm par les balises HTML de Struts doivent être des chaînes ou des booléens. Cependant, il n'y a aucune raison pour que votre ActionForm ne puisse pas avoir de méthodes getter qui renvoient les propriétés sous forme de types plus significatifs pour votre application, par exemple. Date.

Autres conseils

Si vous souhaitez effectuer vous-même une validation (ou utiliser les fonctions du validateur struts qui ont été refactorisées après struts au-delà de la version 1.2), vous aurez besoin des propriétés String pour la raison que vous avez citée: Une fois que vous avez stocké des valeurs numériques dans Integer ou int, elles doivent être soit des nombres, soit "rien du tout". - sinon: comment avez-vous stocké " beaucoup " (littéralement) dans une propriété Integer?

La validation côté client (par exemple, en Javascript) fonctionnerait toujours, mais vous ne voulez pas vous en fier.

Si - lors de la saisie d'un nombre non valide - vous êtes prêt à ce qu'un champ vide soit présenté à l'utilisateur, vous pouvez stocker les valeurs dans Date-, Entier-, Quelles que soient les propriétés. Si vous souhaitez présenter la valeur d'origine avec le message d'erreur, vous aurez besoin de la propriété String.

Cela a le prix que vous devez faire la conversion manuellement. Struts 1.2 étant assez ancien, vous pouvez songer à remplacer progressivement votre infrastructure d’application par une technologie plus moderne et à utiliser deux technologies (l’ancienne et la nouvelle) en même temps, jusqu’à ce que la partie ancienne devienne suffisamment petite (ou assez important) pour être abandonné.

nb - vous avez également plus de contrôle sur les valeurs que vous souhaitez accepter en tant que nombres. Je me souviens encore d’une ancienne application de cartes de crédit Struts dans laquelle je demandais à mon responsable quel était le résultat attendu lorsque vous souhaitiez retirer 3e2 Euro de votre carte. Ils n'ont pas dit 300 (convertis par Struts) mais ont opté pour une erreur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top