2016-03-28 60 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' 
}