【问题标题】:SOAP service using Spring. Escaping special characters使用 Spring 的 SOAP 服务。转义特殊字符
【发布时间】:2013-07-15 10:00:36
【问题描述】:

我有一个使用 Spring 框架开发的 SOAP Web 服务。每当请求包含一些无效数据时,我需要显示如下错误消息

Error occurred. Invalid data for <Field Name>.

所以我的代码如下所示用于名称验证。当 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 &lt;name>.

如何在 SOAP UI 中显示正确的

在 SOAP UI 中使用 CDATA 消息如下所示

Error occurred. No value passed for the field <![CDATA[<]]name>.

【问题讨论】:

    标签: java soap soapui spring-ws


    【解决方案1】:

    XML 规范规定:

    & 符号 (&) 和左尖括号 () 可以使用字符串“>”表示,并且为了兼容性,必须使用“>”或出现在内容中的字符串“]]>”中的字符引用进行转义,当该字符串未标记 CDATA 部分的结尾时。

    因此,您需要转义错误字符串中的左尖括号:

    Error occurred. No value passed for the field &lt;name>.
    

    或者将整个错误字符串封装在一个 CDATA 部分中:

    <![CDATA[Error occurred. No value passed for the field <name>.]]>
    

    欲了解更多信息,请参阅http://www.w3.org/TR/xml/#syntax

    【讨论】:

    • 如果我的消息是“.]]>”那么接收方/客户端会正确处理它吗?
    • 而且转义是什么意思?我尝试了一些类似“Assert.notNull(name,”错误发生。没有为字段 &name> 传递值。“);”但我仍然没有得到我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 2016-05-01
    • 2019-01-29
    相关资源
    最近更新 更多