我有密码
<int:channel id="partnerConfigChannel" />
<int:gateway id="partnerService" service-interface="org.service.PartnerService"
default-request-timeout="5000" default-reply-timeout="5000">
<int:method name="findConfig" request-channel="partnerConfigChannel" />
</int:gateway>
<int-jpa:retrieving-outbound-gateway entity-manager="entityManager"
request-channel="partnerConfigChannel"
jpa-query="select q from QueueConfiguration q where q.partnerId = :partnerId">
<int-jpa:parameter name="partnerId" expression="payload['partnerId']" />
</int-jpa:retrieving-outbound-gateway>
和java接口
public interface PartnerService {
@Payload("partnerId")
List<QueueConfiguration> findConfig();
}我叫它
List<QueueConfiguration> qc= partnerService.findConfig();但是我得到了异常EL1007E:(pos 0):属性或字段'partnerId‘在空上找不到
请告诉我如何通过有效载荷。我尝试通过传递带有映射的消息对象,字符串,但同样的错误。在这种情况下,请告诉我如何通过有效载荷。
发布于 2016-10-04 12:40:55
@有效载荷(“partnerId”)
此时,不存在要对SpEL表达式进行计算的对象。
它要么是一个文字
@Payload("'partnerId'")或者参考其他的豆子。
此外,在适配器上,您期望有效负载是带有键partnerId的映射。
expression="payload['partnerId']"这样就不行了。
如果你想传递一个变量,你应该这样做.
公共接口PartnerService {
List<QueueConfiguration> findConfig(MyClass param);其中MyClass有一些属性“partnerId”。
或
List<QueueConfiguration> findConfig(String partnerId);和
expression="payload"我建议你多做一些阅读。
发布于 2016-10-05 07:28:46
我修改了我的代码
public interface PartnerService {
List<QueueConfiguration> findConfig(@Payload Message msg);}
这个电话就像
Map msgMap=new HashMap();
msgMap.put("partnerId", partnerId);
Message msg=MessageBuilder.withPayload(msgMap).build();
List<QueueConfiguration> qc= partnerService.findConfig(msg);而且效果很好。
https://stackoverflow.com/questions/39850303
复制相似问题