2010-02-17 5 views
2

Utilisation de Struts 2.1.6, xwork 2.1.2 et ognl 2.6.11 Dans mon action struts, j'ai une Map que je récupère des éléments en utilisant OGNL. Si la clé que j'utilise pour chercher n'existe pas dans la carte alors OGNL retourne un tableau d'objets vide, que OGNL convertit en une chaîne et j'obtiens la référence d'objet [email protected] .... Cela se produit dans plusieurs endroits et semble être la carte ayant la valeur générique spécifié comme un objet. Ce n'est pas quelque chose que je peux changer. J'ai retracé le problème pendant un moment, mais quand je me suis retrouvé au cœur du code OGNL et que je n'ai pas vu de lumière au bout du tunnel. Actuellement, je vais aller avec un hack vilain de vérifier la chaîne retour pour voir si elle commence avec "java.lang.Object @" et si oui, retourner une chaîne vide. Je n'aime pas la solution mais c'est ce que le temps permet. Est-ce que quelqu'un a rencontré un problème similaire?Utilisation de OGNL pour renvoyer des données à partir d'une carte <String, Object>

Où est-ce que OpenSymphony est allé? les mises à jour de leur site Web semblent avoir été bloquées, les forums des utilisateurs indiquent qu'ils sont convertis à Google Groupes au plus tard le 12 novembre 09

Répondre

2

Ceci est un problème avec les valeurs null: si la valeur est null, le comportement par défaut est de créer une valeur en utilisant le constructeur par défaut. Comme le type de valeur de votre map est Object, de nouveaux objets sont créés où null est.

Pour arrêter ce comportement:

  • utilisation @CreateIfNull(value = false)
  • utilisation mapName_CreateIfNull=false dans le fichier classname-convertion.properties.
Questions connexes