【问题标题】:Required: javax.xml.bind.JAXBElement<java.lang.String>; found java.lang.String必需:javax.xml.bind.JAXBElement<java.lang.String>;找到 java.lang.String
【发布时间】:2015-10-07 09:58:53
【问题描述】:

在 JAVA Web 服务中设置值时遇到问题。我已经完成了 Web 服务客户端来设置值,但我收到错误消息 Required: javax.xml.bind.JAXBElement;找到 java.lang.String 。

我已经开发了 Web 服务客户端存根,下面是存根中的示例脚本

 Service service = Service.create(url, qname);
    // Extract the endpoint interface, the service "port".
      ObjectFactory  daget = service.getPort(ObjectFactory.class);  
      ComBdata  NewComdata = (ComBdata) daget.createProd();
         NewComdata.setNumberID(rd.getString(1));

从生成的客户端存根

 public void setNumberID (JAXBElement<String> value) {
    this. numberID = value;
    }

我该如何解决这个错误?我是 JABX 的新手

【问题讨论】:

  • 不知道你的代码是什么rd.getString(1),我猜它返回String。但是您的方法setNumberID 需要JAXBElement 类型的参数。
  • 如何设置或配置 JAXBElement 然后提供它??

标签: java xml web-services jaxb


【解决方案1】:

此方法创建一个具有特定值的 JAXBElement:

<T> JAXBElement<T> wrap( String ns, String tag, T o ){
    QName qtag = new QName( ns, tag );
    Class<?> clazz = o.getClass();
    @SuppressWarnings( "unchecked" )
    JAXBElement<T> jbe = new JAXBElement( qtag, clazz, o );
    return jbe;
}

您的电话将是

JAXBElement<String> jbw = wrap( ?, ?, rd.getString(1) );

但我不能告诉你命名空间或元素标签。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 2021-11-25
    • 2022-01-09
    相关资源
    最近更新 更多