我正在为 nexus oss 开发一个插件。我的应用程序创建一个休息调用响应(对来自服务器的请求)。但是当服务器收到它时,会抛出如下错误
javax.xml.bind.UnmarshalException:
unexpected element (uri:"", local:"com.collabnet.teamforge.ia.types.GetConfigurationParametersResponse").
Expected elements are
\lt{http://www.collab.net/teamforge/integratedapp}CreateProjectConfigurationRequest\gt,
\lt{http://www.collab.net/teamforge/integratedapp}GetConfigurationParametersRequest\gt,
\lt{http://www.collab.net/teamforge/integratedapp}GetConfigurationParametersResponse\gt,
\lt{http://www.collab.net/teamforge/integratedapp}GetPageComponentParametersRequest>
我猜这个异常背后的原因是响应与预期不匹配,因为uri(这只是我的猜测,如果错误请纠正我),即响应中的命名空间未设置。
我的插件中的代码片段如下
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"configurationParameter"
})
@XmlRootElement(name = "GetConfigurationParametersResponse", namespace = "http://www.collab.net/teamforge/integratedapp")
public class GetConfigurationParametersResponse
extends BaseResponse
{
为什么在创建响应时未拾取名称空间?
如果异常的真正原因不是空 uri,甚至可以纠正我。如果是这样,这个异常背后的真正原因是什么?
请帮忙 。
根据错误消息,传递给 JAXB 的 XML 文档是。看起来好像这个 XML 是由 JAXB 之外的其他东西创建的(我怀疑是 XStream)。
<com.collabnet.teamforge.ia.types.GetConfigurationParametersResponse>
...
</com.collabnet.teamforge.ia.types.GetConfigurationParametersResponse>
您的 JAXB 映射需要如下所示的 XML 文档:
<GetConfigurationParametersResponse xmlns="http://www.collab.net/teamforge/integratedapp">
...
</GetConfigurationParametersResponse>
如果您需要与以下 XML 进行交互:
<com.collabnet.teamforge.ia.types.GetConfigurationParametersResponse>
...
</com.collabnet.teamforge.ia.types.GetConfigurationParametersResponse>
然后您可以将映射更改为:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"configurationParameter"
})
@XmlRootElement(name = "com.collabnet.teamforge.ia.types.GetConfigurationParametersResponse")
public class GetConfigurationParametersResponse
extends BaseResponse
{
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)