1

我尝试使用 JAXB 注释发送和 xml 文件,但我看到节点具有以下格式:

<:subject xmlns="http://www..." xmlns:atom="http://www.w3.org/2005/atom">
 <:data>maths<:data>
</:subject>

而不是这个:

<subject xmlns="http://www..." xmlns:atom="http://www.w3.org/2005/atom">
 <data>maths<data>
</subject>

我不明白为什么会这样。从哪里插入 : 符号,为什么?吨

My model has this form:


@XmlRootElement(name="subject")
@XmlAccessorType(XmlAccessType.FIELD)
public class Registration {

   private String data;

    get/set
}

我的包信息.java:

  @javax.xml.bind.annotation.XmlSchema (
   namespace="http://www..",
   elementFormDefault=XmlNsForm.QUALIFIED,
xmlns = { 
  @javax.xml.bind.annotation.XmlNs( prefix=" ", namespaceURI="http://www..."),
  @javax.xml.bind.annotation.XmlNs( prefix="atom" ,namespaceURI="http://www.w3.org/2005/atom")
})

 package mypackage.affil;

 import javax.xml.bind.annotation.XmlNsForm;

我的观点:

 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
 <%@ page language="java" contentType="text/html"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html">
<title>Insert title here</title>
</head>
<body>

<h1>Create New Person</h1>

<c:url var="takeinto" value="/takedata" />
<form:form modelAttribute="takedataAttribute" method="POST" action="${takeinto}">
<table>
    <tr>
        <td><form:label path="data">Affiliation</form:label></td>
        <td><form:input path="data"/></td>
    </tr>

谁能告诉我为什么符号 : 出现?

4

1 回答 1

0

你在那里触发了一个奇怪的错误!我的猜测是问题出在这里(我已经删除了 Java 命名空间名称,您可以在 package-info.java 中通过在import声明后放入正确的语句来完成package):

@XmlSchema (
    namespace="http://www..",
    elementFormDefault=XmlNsForm.QUALIFIED,
    xmlns = { 
        @XmlNs( prefix=" ", namespaceURI="http://www..."),
        @XmlNs( prefix="atom" ,namespaceURI="http://www.w3.org/2005/atom")
})

我猜这是使用单个空字符串 forprefixQUALIFIEDfor的组合elementFormDefault。试试这个:

@XmlSchema(
    namespace="http://www..",
    elementFormDefault=XmlNsForm.UNQUALIFIED,
    xmlns = { 
        @XmlNs(prefix="atom", namespaceURI="http://www.w3.org/2005/atom")
})

也就是说,UNQUALIFIED只提供xmlns您想要合格的零件。您可能需要在@XmlElement整个标签上指定命名空间(文档有些不清楚),因此我还建议将其重构为接口中的常量;这也使事情变得更清楚。

于 2012-05-20T05:32:02.890 回答