2014-09-30 36 views
1

我正在學習JAX-WS,並且我也是在JAXB中引入的。我可以使用它來(un)編組java(xml)到xml(java)。但是,什麼是此行的目的,然後我產生我與Apache CXF WS數據:WebService數據結構中的JAXBElement

@XmlElementRef(name = "Id", namespace = "External.Test", type = JAXBElement.class, required = false) 
    protected JAXBElement<String> id; 
  1. 爲什麼它不能只是String id代替JAXBElement<String> id
  2. 如何將請求數據(比方說java POJO)轉換爲 這樣的結構? (我說的是從映射到POJO這 暴露WS結構包裹成JAXBElements場)
+0

它不能只是一個字符串,因爲你正在處理一個web服務。 Web服務通過不同的語言使用,一些語言處理字符串的方式不同。看看這個http://stackoverflow.com/questions/14489306/parameter-jaxbelement-string – 2014-09-30 19:41:10

+0

@ j.con這與用不同語言的字符串處理無關。 – lexicore 2014-09-30 21:34:26

+0

@lexicore哦,是啊?嘗試在'int'爲空時從C#中的java web服務使用'int'。 C#不允許'int'爲空,只有'int?'這就是爲什麼使用標準包裝器的原因...... – 2014-10-01 12:40:54

回答

1

1 .-這種結構取決於你如何定義你的架構中使用。例如,如果你使用一個替代組。有關更多信息,請參閱this answer

2:這裏是一些代碼,可以幫助你: Let's說,你POJO定義是這樣的結構:

public JAXBElement<?> getObjectData() { 
    return objectData; 
} 

然後,當你解組,您已經接受了該請求被填充用你想恢復的字符串:

JAXBElement<String> rncElem = (JAXBElement<String>) dataContainer.getObjectData(); 
return rncElem.getValue(); 
+0

好吧,我在鏈接裏找到了答案:)謝謝 – energizer 2014-10-01 19:34:08