2016-09-14 2 views
0

Je suis en train de faire quelque chose comme ceci:ressources en lecture pas quand SPEL est utilisé

#{ systemProperties['mySystemProperty'] == 'ABC' ? 'pathB' : 'pathC'} 

dans le chemin d'accès à une ressource dans le contexte du printemps.

(Voir aussi ma question: Use bean value as property in spring context)

Mais bien mySystemProperty est certainement 'ABC' 'cheminB' est jamais utilisé.

Dois-je faire la comparaison de chaînes d'une autre manière?

Merci

MISE À JOUR

J'ai découvert que le problème d'origine n'est pas la comparaison de chaînes.

J'ai essayé:

<import resource="#{'A' == 'A' ? 'pathA' : 'pathB'}/myConfig.xml" /> 

-> La config est jamais lu. Cette ligne sera totalement ignorée. Cela n'a pas d'importance si pathA ou pathB existe .... Cette ligne est ignorée.

J'ai essayé aussi:

<import resource="#{true ? 'pathA' : 'pathB'}/myConfig.xml" /> 

Et le résultat est le même. La ligne entière est ignorée. Aucune exception lorsque le fichier est introuvable, aucune exception lorsque le fichier contient un non-sens. Toute la ligne est simplement ignorée ... Comment est-ce possible?

MISE À JOUR

J'utilise des profils de printemps à la place maintenant, voir la dernière mise à jour de la question Use bean value as property in spring context.

Cela est plus approprié pour moi, mais le problème d'origine n'a pas été résolu: Une importation de ressources ne fonctionne pas lorsque SpEL est utilisé.

+0

Essayez-vous de comparer une chaîne exacte ou une sous-chaîne? Que se passe-t-il si vous injectez la propriété telle quelle et l'examinez? – chrylis

+0

Mmh ... c'est bizarre ... J'ai essayé avec le résultat: SAXParseException: Le contenu n'est pas autorisé dans prolog. – Nina

+0

je l'ai essayé par SPEL parser 'System.out.println (parser.parseExpression (" 'ABC' == 'ABC'? '1': '2' "). GetValue (String.class));', et il a bien fonctionné avec '=='. Donc je pense que votre 'systemProperties ['mySystemProperty']' devrait poser problème. – Minh

Répondre

0

Si vous avez essayé de remplacer "==" par "EQ"