首页 > 解决方案 > JAva SOAP:试图以不正确的命名空间方式创建或更改对象

问题描述

我见过这样的问题,但到目前为止它们没有帮助。

我目前在为我的 SOAP 正文中的元素设置前缀时遇到问题。我正在尝试构建的请求如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sen="http://company.org/sendmailaTTACH">
   <soapenv:Header/>
   <soapenv:Body>
      <sen:SendMail>
         <sen:plainbody>?</sen:plainbody>
      </sen:SendMail>
   </soapenv:Body>
</soapenv:Envelope>

能够SendMail通过遵循这个答案将它构建到对象的位置,但是当它到达添加前缀的部分时:<sen:plainbody>即添加sen前缀到plainbody我得到错误:

org.w3c.dom.DOMException: NAMESPACE_ERR: 试图以不正确的命名空间方式创建或更改对象。

SendMail对象如下所示:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(
        name = "",
        propOrder = {"from", "displayname", "to", "cc", "bcc", "htmlbody", "plainbody", "subject", "imageurl"}
)
@XmlRootElement(
        name = "SendMail"
)
public class SendMail {
    protected String from;
    protected String displayname;
    protected String to;
    protected String cc;
    protected String bcc;
    protected String htmlbody;
    protected String plainbody;
    protected String subject;
    protected String imageurl;

    public SendMail() {
    }
.
.
.
//getters and setters

我猜可能是因为plainbody和其他字段有String?

有没有办法解决?

谢谢!

标签: javaxmlspring-bootsoap

解决方案


想出了一个解决方案:

能够通过使用命名空间注释类属性@XmlElement并指定命名空间来解决它

@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String from;

@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String displayname;

@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String to;

@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String cc;

@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String bcc;

@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String htmlbody;

@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String plainbody;

@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String subject;

@XmlElement(namespace = "http://company.org/sendmailaTTACH")
protected String imageurl;

推荐阅读