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é.
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
Mmh ... c'est bizarre ... J'ai essayé avec le résultat: SAXParseException: Le contenu n'est pas autorisé dans prolog. –
Nina
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