Question

J'essaie de référencer un autre objet que j'ai défini dans un fichier de configuration Spring à partir d'une expression. Plus précisément, j'essaie de renseigner une propriété avec la valeur d'une expression dans laquelle j'appelle une méthode, puis une propriété sur l'objet renvoyé par cette méthode.
J'ai essayé ce qui suit (les noms ont été changés):

<property name="NullableIntProperty"
          expression="#{Some.Object.Id}.Get().NullableIntValue"/>

Some.Object.Id est une référence à un autre objet que j'ai défini dans un fichier de configuration, tel que:

<object id="Some.Object.Id" ... >

mais mon application ne parvient pas à démarrer avec l'exception d'analyse dans l'attente de "COLON", trouvé '}' . Je pense que nous attendons un espace de noms, mais je ne trouve pas la documentation pour cela.

J'ai essayé plusieurs choses, mais partout je me retrouve dans une impasse. J'ai initialement essayé une combinaison de MethodInvokingFactoryObject et de PropertyRetrievingFactoryObject que nous utilisons ailleurs pour les types non nullables, mais cela échoue pour les nullables qui sont en réalité null depuis que Spring voit une fabrique d'objets renvoyant null comme un échec (ce qui est généralement le cas).

Était-ce utile?

La solution

Vous pouvez utiliser la syntaxe d'expression @ (object-id-here) pour récupérer un objet du contexte Spring à l'aide d'une expression :

<property name="NullableIntProperty"
          expression="@(Some.Object.Id).PropertyOnSomeObject"/>

Autres conseils

Changer # en $ devrait résoudre le problème, je crois.

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