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>

なぜこれが起こるのか理解できません。どこから : 記号を挿入し、その理由は? T

My model has this form:


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

   private String data;

    get/set
}

私のpackage-info.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

奇妙なバグが発生しました。問題はここにあると思います (宣言importの後に正しいステートメントを入れることで、package-info.java で実行できる Java 名前空間名を削除しましたpackage)。

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

と に単一の空の文字列を使用する組み合わせだと思いprefixます。代わりにこれを試してください:QUALIFIEDelementFormDefault

@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 に答える