2016-03-28 24 views
0

我需要从常规地图中删除密钥。我经历了很多帖子看到并试着这样做:Mule - 从Groovy组件中的地图中删除给定的密钥

def mymap = message.getInboundProperty("http.query.params"); 

    mymap.remove('thatKey'); 

上面的代码不为我工作,并抛出错误:

Message    : Failed to invoke ScriptComponent{GlobalProductDataStoreIntegrationMainFlow.component.1929599908}. Component  that caused exception is: ScriptComponent{GlobalProductDataStoreIntegrationMainFlow.component.1929599908}. Message payload is of  type: NullPayload 
Type     : org.mule.component.ComponentException 
Code     : MULE_ERROR--2 
Payload    : {NullPayload} 
JavaDoc    : http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/component/ComponentException.html 
******************************************************************************** 
Exception stack is: 
1. null (java.lang.UnsupportedOperationException) 
    java.util.Collections$UnmodifiableMap:1345 (null) 
2. java.lang.UnsupportedOperationException (javax.script.ScriptException) 
    org.codehaus.groovy.jsr223.GroovyScriptEngineImpl:348 (http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/script/ScriptException.html) 
3. Failed to invoke ScriptComponent{GlobalProductDataStoreIntegrationMainFlow.component.1929599908}.  Component that caused  exception is: ScriptComponent{GlobalProductDataStoreIntegrationMainFlow.component.1929599908}.  Message payload is of type: NullPayload (org.mule.component.ComponentException) 
    org.mule.component.AbstractComponent:142 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/component/ComponentException.html) 
******************************************************************************** 
Root Exception stack trace: 
java.lang.UnsupportedOperationException 
at java.util.Collections$UnmodifiableMap.remove(Collections.java:1345) 
at org.mule.module.http.internal.ParameterMap.remove(ParameterMap.java:112) 

回答

2

你得到UnsupportedOperationException异常因为地图是不可变的;它不能被修改。解决方法是创建一个排除不想要的条目的新地图:

def mymap = message.getInboundProperty("http.query.params").findAll { 
    it.key != 'thatkey' 
}