2016-09-15 4 views
2

Ich bin neu in Camel und mit einfachen Ausdruck, um Wert aus der Eigenschaft Datei in Java DSL zu erhalten.Camel einfache Ausdruck Sprache - Wie Wert Wert dynamisch zu bekommen

.setProperty("PortalUrl", simple("properties:Portal.url"))

Objektdatei Wert -
Portal.url=abc.com/example

jetzt aber muss ich die kundenspezifische URL von Immobilien-Datei erhalten. Beispielwerte -

Portal.url.customer1=abc.com/example/abcd Portal.url.customer2=abc.com/example/xyz

Der Kundenname in der Anforderung selbst kommt, so will ich es tun wie
.setProperty("PortalUrl", simple("properties:Portal.url."+"${body.customerName}"))

aber der obige Code funktioniert nicht sein gibt mir den Wert der PortalUrl Eigenschaft als properties:Portal.ulr.customer1

und wenn ich mit einem direkten hartcodierte Wert versucht, seine mir die richtige URL von Immobilien Datei geben - .setProperty("PortalUrl", simple("properties:Portal.url."+"customer1"))

und korrekten Wert zurück - abc.com/example/abcd

Aber ich mag als Par die Kundennamen in eingehender Anforderung die URL dynamisch zu bekommen. Kann mir jemand dabei helfen und erklären, wie einfach das funktioniert.

Antwort

2

Haben Sie mit der ${body} Funktion in der einfachen Sprache versucht:

.setProperty("PortalUrl", 
    simple("${properties:Portal.url.${body.customerName}}")) 
+0

Oh, wusste nicht, dass Sie das tun könnte, TIL ^^ –

+0

Hallo Claus, ich habe auch versucht, diese aber es ist nicht entweder arbeiten, Der '$ {body.customerName}' wird als normaler String-Wert behandelt und der Code gibt einen Fehler, da für Portal.url. $ {body.customerName} in der Eigenschaftendatei kein Wert gefunden wird. – SBORA

+0

Es funktionierte für mich, welche Version von Camel benutzt du? –