Je développe une application Web à l'aide de STRUTS2. Je veux améliorer la chaîne de formulaires. Pour ce besoin Coupez toutes les chaînes et si la chaîne obtenue est vide, définissez null fort> sur champ. Pour cela, j'ai créé stringconverter em>. P> Suivant, j'ai ajouté la ligne à Xwork-conversion.properties p> c'est tout. Mais je n'ai pas reçu le résultat souhaité. P> ConvertToString (comptTostring () est appelé lorsque la formulaire de construction JSP, mais ConvertFromstring () n'invoque pas. P> Ce que je fais mal ? Comment puis-je obtenir le même comportement en utilisant un autre moyen? P> S'il vous plaît, ne proposez pas de solutions telles que: p> merci d'avance,
Alexey. P> p>
4 Réponses :
Je ne fais pas de Struts2, mais un problème similaire s'est manifesté dans JSF jusqu'à la version 1.2 en 2006 (JSF est le cadre MVC de Sun Sun, le concurrent de Struts2). Conversion de Je ne serai pas surpris si une fonction / bug similaire existe dans Struts2. Je regarderais autour de leur page d'accueil s'il n'y a pas déjà de problème / rapport de bogue à ce sujet et de poster une autre. P> String Code> était impossible dans JSF aussi "par conception". Les versions JSF plus anciennes utilisées pour vérifier si le type cible est égal à
java.lang.string code> et il définit simplement la valeur de paramètre de demande dans le modèle sans tenter de la convertir (car la valeur de paramètre de demande est déjà obtenue comme étant
chaîne code>). Si le type de cible a été différent, il localisera et exécutez un convertisseur associé pour le convertir au type cible souhaité (autre que
chaîne code>). Depuis JSF 1.2, ils l'ont réparé en supprimant la vérification du type cible et en localisant le convertisseur de quelque manière que ce soit. P>
me semble juste. Êtes-vous sûr que ConvertFromstring n'est même pas appelé? P>
Une autre approche que vous pourriez essayer est d'écrire un intercepteur qui élimine tous les paramètres (on le souhaite souvent). p>
Vous trouverez la réponse dans le code de la classe Stroustypeconverter. Fondamentalement, à ce niveau, le cadre de la convertisseur de type pas em> ne savait rien de savoir si les données se font "de" ou "à" l'utilisateur, elle le sait simplement qu'elle convertit d'un type (chaîne) à un autre type (aussi string). Et comme il vérifie d'abord le type "à", il sera toujours em> appelttostring. P>
Pour couper une longue histoire courte, la version actuelle des Struts (2.1.x est ce que j'utilise) ne peut pas et ne peut pas prendre en charge les convertisseurs de type chaîne à chaîne forts>. Depuis qu'ils sont, après tout, type em> convertisseurs, vous pouvez probablement dire que c'est par conception. P>
Je cherche également un moyen d'obtenir un résultat similaire, mais je n'ai pas encore trouvé de très bonne solution. L'approche la plus "correcte" serait probablement d'écrire un intercepteur (comme @leonbloy mentionné). Il y aurait plusieurs moyens d'aborder cela, l'être le plus simple de réduire tous les paramètres de la demande avant qu'ils ne soient définis sur l'action (c'est-à-dire avant l'intercepteur «paramètres» exécute). P>
La même chose me arrive.