2017-02-08 8 views
0

Anypoint Studio 6.1 및 Mule 3.8.1을 사용하고 있고 "\ n"이 새 행으로 반환 된 예외 메시지를 반환하고자합니다. System.getProperty ("line.separator")를 사용하려고하는데 "\ n"이 메시지에 텍스트로 표시되고 새 줄이 표시되지 않습니다.Anypoint Studio Mule의 사용자 정의 예외 메시지에 새 행 추가

어떻게 작동합니까?

XML 테스트 흐름 : 당신은 개행 문자를 이스케이프 할 필요가 같은

<?xml version="1.0" encoding="UTF-8"?> 

<mule xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" 
    xmlns:spring="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd"> 
    <flow name="tempflowFlow"> 
     <http:listener config-ref="HTTP_Listener_Configuration" path="/test-flow" allowedMethods="GET" doc:name="HTTP"/> 
     <set-payload value="{ 
    &quot;Exception&quot;: { 
    &quot;status&quot;: -1, 
    &quot;description&quot;: &quot;\nJson content is not compliant with schema\ncom.github.fge.jsonschema.core.report.ListProcessingReport: failure\n--- BEGIN MESSAGES ---\nerror: object has too many properties (found 2 but schema requires at most 1)\n level: \&quot;error\&quot;\n schema: {\&quot;loadingURI\&quot;:\&quot;file:/C:/temp.json#\&quot;,\&quot;pointer\&quot;:\&quot;/properties/field1\&quot;}\n instance: {\&quot;pointer\&quot;:\&quot;/field1\&quot;}\n domain: \&quot;validation\&quot;\n keyword: \&quot;maxProperties\&quot;\n found: 2\n required: 1\n--- END MESSAGES ---\n (org.mule.module.json.validation.JsonSchemaValidationException).&quot; 
    } 
}" encoding="UTF-8" mimeType="application/json" doc:name="Set Payload"/> 
     <logger message="#[payload.replace(&quot;\n&quot;, System.getProperty('line.separator'))]" level="INFO" doc:name="Logger"/> 
     <set-payload value="#[payload.replace(&quot;\n&quot;, System.getProperty('line.separator'))]" encoding="UTF-8" mimeType="application/json" doc:name="Set Payload"/> 
    </flow> 
</mule> 

감사

답변

1

보인다. . 또한, 작은 따옴표 (') 대신에 MEL 발현 내부에 큰 따옴표 (")를 사용

<logger message="#[payload.replace('\\n', System.getProperty('line.separator'))]" level="INFO" 
     doc:name="Logger" /> 
    <set-payload value="#[payload.replace('\\n', System.getProperty('line.separator'))]" encoding="UTF-8" 
     mimeType="application/json" doc:name="Set Payload" /> 

위의 코드가 작동하는 것 같다 :.

INFO 2017-02-09 18:03:09,349 [Mule.app.deployer.monitor.1.thread.1] org.mule.module.launcher.MuleDeploymentService: 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+ Started app 'test2'          + 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
INFO 2017-02-09 18:03:17,280 [[test2].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: { "Exception": {  "status": -1,  "description": " 
Json content is not compliant with schema 
com.github.fge.jsonschema.core.report.ListProcessingReport: failure 
--- BEGIN MESSAGES --- 
error: object has too many properties (found 2 but schema requires at most 1) 
    level: \"error\" 
    schema: {\"loadingURI\":\"file:/C:/temp.json#\",\"pointer\":\"/properties/field1\"} 
    instance: {\"pointer\":\"/field1\"} 
    domain: \"validation\" 
    keyword: \"maxProperties\" 
    found: 2 
    required: 1 
--- END MESSAGES --- 
(org.mule.module.json.validation.JsonSchemaValidationException)." } } 

Mule log

+0

덕분에 내가 뭔가를 가지고 있어야합니다 이스케이프를 시도 할 때 잘못되었습니다. 도움에 감사드립니다. – user3165854