我現在掙扎了幾天,現在遇到了以下問題。我搜索了很多答案,在這裏,在球衣郵寄名單和一般的網絡中,但無法找到這個問題的答案。資源列表生成的WADL
設置問題域...
我使用 澤西1.16 Tomcat的內部7.
我創建了一個簡單的JAX-RS資源看起來像這樣:
@Path("/")
@Produces({ "application/xml", "text/plain" })
public class ExampleResource {
@GET
public List<Thing> getThings() {
List<Thing> list = new ArrayList<>();
list.add(new Thing("a thing 1", "a thing description 1"));
list.add(new Thing("a thing 2", "a thing description 2"));
return list;
}
}
Thing
是JAXB帶註釋的POJO,看起來像這樣
@XmlRootElement(name = "thing")
public class Thing {
private String name;
private String description;
// getters, setters and @XmlElement annotations ommited for brevity
我也配置WadlGeneratorJAXBGrammarGenerator.class
當我問GET http://localhost:8092/rest
它就像一個魅力 - 返回的Thing
很好地格式化集合。
自動生成WADL http://localhost:8092/rest/application.wadl
幾乎是完美的,它看起來像這樣:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application xmlns="http://wadl.dev.java.net/2009/02">
<doc xmlns:jersey="http://jersey.java.net/" jersey:generatedBy="Jersey: 1.16 11/28/2012 02:09 PM" />
<grammars>
<include href="application.wadl/xsd0.xsd">
<doc title="Generated" xml:lang="en" />
</include>
</grammars>
<resources base="http://localhost:8092/rest/">
<resource path="/">
<method id="getThings" name="GET">
<response>
<ns2:representation xmlns:ns2="http://wadl.dev.java.net/2009/02"
xmlns="" element="thing" mediaType="application/xml" />
<representation mediaType="text/plain" />
</response>
</method>
</resource>
</resources>
</application>
就像我說的,近乎完美,這其中就有問題。
<ns2:representation xmlns:ns2="http://wadl.dev.java.net/2009/02"
xmlns="" element="thing" mediaType="application/xml" />
的WADL不描述該/getThings
返回List<Thing>
。 相反,它看起來像是指xsd0.xsd
中的單個元素thing
。 因此,當我用例如wadl2java,它會生成無類型的客戶端。 爲了得到一個List<Thing>
我必須手動代碼時,像
List<Thing> asXml = root().getAsXml(new GenericType<List<Thing>>(){});
有誰知道是否有可能具備自動WADL一代人會以某種方式表明,這種特殊的資源返回列表特定類型的資源?
而我不要想要創建額外的「ThingList」JAXB註釋類,並返回,而不是在我的球衣資源。
我幾乎沒有與產生「完美」 WADL,它只是這個(希望)小,我缺少的部分...
非常感謝您!
我不是太熟悉的WADL完整的例子,但是,什麼(XML)值將是最佳爲你報這條線?在wsdls中,列表和簡單對象幾乎以相同的方式表示。 – acdcjunior
因爲我幾乎沒有使用WSDL的經驗,所以我沒有想到將其與WSDL進行比較。所以你有一個好點。至於它應該是什麼樣子,我也不太確定。您是否可以舉一個例子來說明WSDL中的內容? – Svilen
在一個WSDL中,一個實體(比如'Person')變成了一個'xs:complexType',每個屬性都有一個元素。一個屬性,比如'String name',看起來像' '('minOccurs ='0'意味着它是一個可選字段)。一個屬性是一個列表,比如'String [] nicknames'會變成如下形式:'
acdcjunior