2016-04-04 16 views
1

Sorgu parametresi "requestId" istek URL'sinde yoksa, bir özel durum atmam gerekiyor.Sorgu parametresi kullanılamıyorsa, Mule-Throw hatası

URL şuna benzer: Burada my.server.com?requestId=123&age=26

Ben böyle mesajı özelliğinde RequestID giriş ediyorum: URL RequestID içermiyor

<message-properties-transformer scope="session" doc:name="Adding requestId"> 
    <add-message-property key="requestId" value="#[message.inboundProperties.'http.query.params'.requestId]"/> 
</message-properties-transformer> 

Eğer boş olacaktır. Ancak bu durumda, mevcut olup olmadığını requestId için bir kontrol yapmak istiyorum. Sonra

cevap

2

Tüm düşüncelerinizi eklediğiniz için teşekkürler. Son olarak, herhangi bir yönlendirici yönlendirici veya herhangi bir ifade filtresini koymaya gerek duymamadığım yerinizi kullanmanın basit bir yolunu buldum. O benim kodudur:

if(!message.getInboundProperty("http.query.params").find{ it.key == "requestId" }){ 
throw new IllegalArgumentException('requestId does not exist'); 

} sorgu param çıkışlarında ise

0

Kullanım aşağıda ifade

#[org.mule.util.StringUtils.isNotEmpty(message.inboundProperties.'http.query.params'.requestId)] 

kontrolünü seçim yönlendirici kullanılan ve sorgu param kullanılabilirliği o yollara dayalı örnek kod aşağıda bulabilirsiniz HTTP URL sorgu parametresi durumunu kontrol etmek

<choice doc:name="Choice"> 
     <when expression="#[org.mule.util.StringUtils.isNotEmpty(message.inboundProperties.'http.query.params'.requestId)]"> 
      <logger message="Query param available in request level="INFO" doc:name="Logger"/> 
     </when> 
     <otherwise> 
      <logger message="Query param not available in request level="INFO" doc:name="Logger"/> 
     </otherwise> 
    </choice> 
+0

ve http 'gibi bir değere sahip değildir: // localhost: 8081/test RequestID = & age = 26 'sonra logger olacak? print 'Sorgulama parametresi talep seviyesinde mevcut olsa bile değer mevcut değil –

+0

Anirban ile aynı fikirdeyim. Ancak soru, HTTP URL'sinde sorgu parametresi varlığını kontrol etmektir. Ama önerdiğin, her iki senaryoyu da kontrol ettiği için daha sağlam. Yani boş sorgu parametresi ve bu sorgu parametresi için boş değer. Cevabımı güncelleyeceğim. – RamakrishnaN

1

İhtiyacınıza göre aşağıdakileri yapabilirsiniz: -

<choice doc:name="Choice"> 
      <when expression="#[org.mule.util.StringUtils.isNotEmpty(message.inboundProperties.'http.query.params'.requestId)]"> 
       <logger message="query parameter exist" level="INFO" doc:name="Logger"/> 

      </when> 
      <otherwise> 
       <logger message="query parameter does not exist" level="INFO" doc:name="Logger"/> 
       <!-- Throw your exception here --> 
       <scripting:component doc:name="Script"> 
        <scripting:script engine="Groovy"><![CDATA[ 
         throw new IllegalArgumentException('query parameter does not exist') 
        ]]></scripting:script> 
       </scripting:component> 
      </otherwise> 
     </choice> 
İşte

Sorgu parametresi varsa basitçe bir kaydedici giriş ve Sorgu parametresi yok varsa o olacak atmak istediğiniz istisna ..

0

ileti filtreleri denediniz mi? Edecektir RequestID, sıfır veya boş bir koleksiyon, boş sahte, boşken

<message-filter throwOnUnaccepted="true"> 
     <expression-filter 
      expression="#[message.inboundProperties.'http.query.params'.requestId != empty]" /> 
    </message-filter> 

Bu

bir FilterUnacceptedException atar.

Filtrenin sıfır kabul etmesi gerekiyorsa koşulu değiştirmeniz gerekir.


İlgili konular