Home > Software design >  Convert property value of type 'java.lang.String' to required type 'org.springframewo
Convert property value of type 'java.lang.String' to required type 'org.springframewo

Time:11-16

I am facing below error and using spring version 5.3.14 and Spring_integration 5.5.7 and using camel version 2.25.4.

  org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.lang.String' to required type 'org.springframework.expression.Expression' for property 'onFailureExpression'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'org.springframework.expression.Expression' for property 'onFailureExpression': no matching editors or conversion strategy found

config file:

<int:filter id="xpathfilter" input-channel="eventSpringXpathChannel"
        output-channel="eventSpringOutChannel" discard-channel="eventSpringFailureChannel"
        expression="#xpath(payload, headers.get('xpathKey'), 'boolean')">
        <int:request-handler-advice-chain>
<bean           >
    <property name="onFailureExpression" value="payload" />
    <property name="failureChannel" ref="eventSpringXpathErrorChannel" />
    <property name="trapException" value="true" />
</bean>
        </int:request-handler-advice-chain>
    </int:filter>

CodePudding user response:

That setter expects an instance of org.springframework.expression.Expression, but you provide just value="payload", which is indeed not an Expression.

See another setter:

/**
 * Set the expression to evaluate against the root message after a failed
 * handler invocation. The exception is available as the variable {@code #exception}.
 * Defaults to {@code payload}, if {@code failureChannel} is configured.
 * @param onFailureExpression the SpEL expression.
 * @since 4.3.7
 */
public void setOnFailureExpressionString(String onFailureExpression) {

So, you config will look like:

<property name="onFailureExpressionString" value="payload" />
  • Related