SpelEvaluationException:EL1004E:方法调用:在java.lang.String类型

时间:2017-09-16 12:45:24

标签: java spring spring-cloud-dataflow

所有的

我使用本地服务器运行spring cloud数据流。当我运行像这样定义的流

http --port=8787 | transform --expression=payload.getValue('name') |
jdbc --columns=name --table-name=http_table --password=******
--driver-class-name=org.mariadb.jdbc.Driver --username=root --url='jdbc:mysql://127.0.0.1:3306/target_data'

我使用处理器转换

transform --expression=payload.getValue('name')

但它有错误

  

2017-09-16 20:01:57,561 ERROR -kafka-listener-1 o.s.k.l.LoggingErrorHandler:37 - 处理时出错:   ConsumerRecord(topic = http_jdbc04.http,partition = 0,offset = 0,   CreateTime = 1505563314419,checksum = 1043955671,序列化密钥大小   = -1,序列化值大小= 102,键= null,值= [B @ 5b1b4ce3)       org.springframework.integration.transformer.MessageTransformationException:   无法转换消息;嵌套异常是   org.springframework.messaging.MessageHandlingException:嵌套   例外是   org.springframework.expression.spel.SpelEvaluationException:EL1004E:   方法调用:无法找到方法getValue(java.lang.String)   java.lang.String类型,failedMessage = GenericMessage   [payload = {" name":" world"},headers = {kafka_offset = 0,   id = 0392ca58-6644-91fb-9454-a41e83854955,kafka_receivedPartitionId = 0,   的contentType =应用/ JSON;字符集= UTF-8,   kafka_receivedTopic = http_jdbc04.http,timestamp = 1505563317552}]

以下是我关注spring-cloud-dataflow-docs

的文档

Spring云数据流版本:

1.spring cloud dataflow本地服务器1.2.3.RELEASE

2.Java:1.8.0

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。

这不起作用:

transform --expression=payload.getValue('name')

您应该使用#jsonPath(payload, '<json path expression>')