Ausdrucksanalyse fehlgeschlagen; verschachtelte Ausnahme ist org.springframework.expression.spel.SpelParseException: EL1041E:(pos 28): Nach dem Parsen eines gültigen Ausdrucks enthält der Ausdruck noch mehr Daten: ‘Doppelpunkt(:)’
Ich habe auch versucht, $ anstelle von # zu verwenden.
Dann funktioniert der Standardwert in der Anmerkung einwandfrei, aber ich habe nicht den richtigen Wert aus der Eigenschaftendatei erhalten:
Mit #{} es ist ein Ausdruck, mit ${} es ist ein Platzhalter für einen Wert. Der erste Ausdruck, den Sie verwenden, ruft eine Methode/ein Attribut für eine Bean namens props auf, der Ausdruck mit dem Platzhalter versucht, eine Eigenschaft namens zu finden props.isFPL im Environment. Sie sollten letzteres verwenden und laden Ihre Eigenschaften wahrscheinlich falsch.
– M.Deinum
13. November 2014 um 19:18 Uhr
Danke schön. Wenn ich Eigenschaften falsch lade, warum nimmt #{} den richtigen Wert auf?
– Alex
13. November 2014 um 19:22 Uhr
Denn das ist ein Ausdruck, kein Platzhalter. Beide werden völlig unterschiedlich bewertet.
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
PropertySourcesPlaceholderConfigurer p = new PropertySourcesPlaceholderConfigurer();
p.setIgnoreResourceNotFound(true);
return p;
}
Mein Problem mit $ besteht nicht darin, einen Standardwert zu ignorieren. Das Problem besteht darin, dass der Wert aus der Eigenschaftendatei ignoriert wird
– Alex
15. November 2014 um 20:24 Uhr
Wie lädst du die Properties-Datei?
– shi9
17. November 2014 um 16:09 Uhr
Kevin Liu
Für int Typvariable:
@Value("${my.int.config: #{100}}")
int myIntConfig;
Notiz: da ist kein Platz Vor der Doppelpunkt, sondern ein zusätzliches Leerzeichen nach der Doppelpunkt.
Ich glaube nicht, dass der zusätzliche Platz (nach dem Doppelpunkt) benötigt wird.
– Schattenmann
25. Juli 2018 um 21:52 Uhr
Scheint eine alte Antwort zu sein. Ich konnte den int-Wert wie jeden anderen Wert zuordnen. @Value("${my.int.config:100}")
– Manisch Bansal
1. Oktober 2021 um 14:00 Uhr
Majid Roustaei
Die genaue Antwort auf Ihre Frage hängt davon ab Typ des Parameters.
für ‘String’-Parameter funktioniert Ihr Beispielcode gut:
Wenn ja, dann Eigenschaftssuche nach: props.isFPL findet nur für die erste Eigenschaftsdatei statt (.lokale.Eigenschaften), wenn die Eigenschaft nicht gefunden wird, der Standardwert (WAHR) wird wirksam und die zweite Eigenschaftsdatei (config.properties) wird für diese Eigenschaft effektiv ignoriert.
Für einen String können Sie standardmäßig null wie folgt verwenden:
public UrlTester(@Value("${testUrl:}") String url) {
this.url = url;
}
Unter Wartungsgesichtspunkten würde ich lieber sehen @Value("${testUrl:#{null}}").
– Betliste
23. Januar 2020 um 2:36 Uhr
Das scheint falsch zu sein. Für eine Zeichenfolge ${var:} ist standardmäßig ein leerer String ""
– Peter Wippermann
11. Januar 2022 um 15:09 Uhr
Mike Sommer
Hängt davon ab, wie Sie Ihre Eigenschaften laden, wenn Sie etwas wie verwenden
Unter Wartungsgesichtspunkten würde ich lieber sehen @Value("${testUrl:#{null}}").
– Betliste
23. Januar 2020 um 2:36 Uhr
Das scheint falsch zu sein. Für eine Zeichenfolge ${var:} ist standardmäßig ein leerer String ""
– Peter Wippermann
11. Januar 2022 um 15:09 Uhr
Kilay Verma
Diese Art der Definition von Standardwerten funktioniert nur, wenn wir “value=…” in die @Value-Annotation schreiben. z.B
Funktioniert nicht : @Value(“${testUrl:some-url}” // Dies setzt immer “some-url”, egal was Sie in der Konfigurationsdatei tun.
Funktioniert : @Value(value = “${testUrl:some-url}” // Dadurch wird “some-url” nur gesetzt, wenn die testUrl-Eigenschaft in der Konfigurationsdatei fehlt.
14496900cookie-checkWie wird ein Standardwert in der Spring @Value-Anmerkung korrekt angegeben?yes
Mit
#{}
es ist ein Ausdruck, mit${}
es ist ein Platzhalter für einen Wert. Der erste Ausdruck, den Sie verwenden, ruft eine Methode/ein Attribut für eine Bean namens props auf, der Ausdruck mit dem Platzhalter versucht, eine Eigenschaft namens zu findenprops.isFPL
imEnvironment
. Sie sollten letzteres verwenden und laden Ihre Eigenschaften wahrscheinlich falsch.– M.Deinum
13. November 2014 um 19:18 Uhr
Danke schön. Wenn ich Eigenschaften falsch lade, warum nimmt #{} den richtigen Wert auf?
– Alex
13. November 2014 um 19:22 Uhr
Denn das ist ein Ausdruck, kein Platzhalter. Beide werden völlig unterschiedlich bewertet.
– M.Deinum
13. November 2014 um 19:36 Uhr