我有一个使用Spring框架开发的SOAP Web服务。每当请求包含一些无效数据时,我需要显示如下所示的错误消息
Error occurred. Invalid data for <Field Name>.
所以我的代码如下所示进行名称验证。如果没有为名称字段传递值,则会将此错误作为响应发送。
Assert.notNull(name, "Error occurred. No value passed for the field <name>. ");
所以我的期望是
Error occurred. No value passed for the field <name>.
但SOAP UI中的响应如下所示。
Error occurred. No value passed for the field <name>.
如何显示正确的&lt; SOAP UI中的符号?我试过CDATA。但不确定接收方如何使用CDATA处理请求。
SOAP UI中的CDATA消息如下所示
Error occurred. No value passed for the field <![CDATA[<]]name>.
答案 0 :(得分:2)
XML规范声明:
&符号(&amp;)和左尖括号(&lt;)不得以其文字形式出现,除非用作标记分隔符,或用于注释,处理指令或CDATA部分。如果在其他地方需要它们,则必须分别使用数字字符引用或字符串“&amp; amp;”和“&amp; lt;”进行转义。右尖括号(&gt;)可以使用字符串“&amp; gt;”来表示,并且为了兼容性,当它出现在字符串“]中时,必须使用”&amp; gt;“或字符引用进行转义。 &gt;“在内容中,当该字符串未标记CDATA部分的结尾时。
因此,您需要在错误字符串中转义左尖括号:
Error occurred. No value passed for the field <name>.
或者将整个错误字符串封装在CDATA部分中:
<![CDATA[Error occurred. No value passed for the field <name>.]]>
有关详细信息,请参阅http://www.w3.org/TR/xml/#syntax