이 콘텐츠는 선택한 언어로 제공되지 않습니다.

29.4. Expressions


Overview

The simple language provides various elementary expressions that return different parts of a message exchange. For example, the expression, simple("${header.timeOfDay}"), would return the contents of a header called timeOfDay from the incoming message.
Note
Since Apache Camel 2.9, you must always use the placeholder syntax, ${Expression}, to return a variable value. It is never permissible to omit the enclosing tokens (${ and }).

Contents of a single variable

You can use the simple language to define string expressions, based on the variables provided. For example, you can use a variable of the form, in.header.HeaderName, to obtain the value of the HeaderName header, as follows:
simple("${in.header.foo}")
Copy to Clipboard Toggle word wrap

Variables embedded in a string

You can embed simple variables in a string expression—for example:
simple("Received a message from ${in.header.user} on ${date:in.header.date:yyyyMMdd}.")
Copy to Clipboard Toggle word wrap

date and bean variables

As well as providing variables that access all of the different parts of an exchange (see Table 29.1, “Variables for the Simple Language”), the simple language also provides special variables for formatting dates, date:command:pattern, and for calling bean methods, bean:beanRef. For example, you can use the date and the bean variables as follows:
simple("Todays date is ${date:now:yyyyMMdd}")
simple("The order type is ${bean:orderService?method=getOrderType}")
Copy to Clipboard Toggle word wrap

Specifying the result type

You can specify the result type of an expression explicitly. This is mainly useful for converting the result type to a boolean or numerical type.
In the Java DSL, specify the result type as an extra argument to simple(). For example, to return an integer result, you could evaluate a simple expression as follows:
...
.setHeader("five", simple("5", Integer.class))
Copy to Clipboard Toggle word wrap
In the XML DSL, specify the result type using the resultType attribute. For example:
<setHeader headerName="five">
  <!-- use resultType to indicate that the type should be a java.lang.Integer --> 
  <simple resultType="java.lang.Integer">5</simple>
</setHeader>
Copy to Clipboard Toggle word wrap

Nested expressions

Simple expressions can be nested—for example:
simple("${header.${bean:headerChooser?method=whichHeader}}")
Copy to Clipboard Toggle word wrap

Accessing constants or enums

You can access a bean's constant or enum fields using the following syntax:
type:ClassName.Field
Copy to Clipboard Toggle word wrap
For example, consider the following Java enum type:
package org.apache.camel.processor;
...
public enum Customer {
    GOLD, SILVER, BRONZE
}
Copy to Clipboard Toggle word wrap
You can access the Customer enum fields, as follows:
 from("direct:start")
    .choice()
        .when().simple("${header.customer} ==
          ${type:org.apache.camel.processor.Customer.GOLD}")
            .to("mock:gold")
        .when().simple("${header.customer} ==
          ${type:org.apache.camel.processor.Customer.SILVER}")
            .to("mock:silver")
        .otherwise()
            .to("mock:other");
Copy to Clipboard Toggle word wrap

OGNL expressions

The Object Graph Navigation Language (OGNL) is a notation for invoking bean methods in a chain-like fashion. If a message body contains a Java bean, you can easily access its bean properties using OGNL notation. For example, if the message body is a Java object with a getAddress() accessor, you can access the Address object and the Address object's properties as follows:
simple("${body.address}")
simple("${body.address.street}")
simple("${body.address.zip}")
simple("${body.address.city}")
Copy to Clipboard Toggle word wrap
Where the notation, ${body.address.street}, is shorthand for ${body.getAddress.getStreet}.

OGNL null-safe operator

You can use the null-safe operator, ?., to avoid encountering null-pointer exceptions, in case the body does not have an address. For example:
simple("${body?.address?.street}")
Copy to Clipboard Toggle word wrap
If the body is a java.util.Map type, you can look up a value in the map with the key, foo, using the following notation:
simple("${body[foo]?.name}")
Copy to Clipboard Toggle word wrap

OGNL list element access

You can also use square brackets notation, [k], to access the elements of a list. For example:
simple("${body.address.lines[0]}")
simple("${body.address.lines[1]}")
simple("${body.address.lines[2]}")
Copy to Clipboard Toggle word wrap
The last keyword returns the index of the last element of a list. For example, you can access the second last element of a list, as follows:
simple("${body.address.lines[last-1]}")
Copy to Clipboard Toggle word wrap
You can use the size method to query the size of a list, as follows:
simple("${body.address.lines.size}")
Copy to Clipboard Toggle word wrap

OGNL array length access

You can access the length of a Java array through the length method, as follows:
String[] lines = new String[]{"foo", "bar", "cat"};
exchange.getIn().setBody(lines);

simple("There are ${body.length} lines")
Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat