我正在嘗試創建spring restful webservice應用程序。 我需要設計服務,它將同時返回json和xml。目前默認情況下json是作爲響應返回的,但我也想返回xml。Spring Rest服務不適用於XML響應
如果我打:http://localhost:8087/RestServices/rest/profile/ 或233 以.json
>>我得到預期
但如果打JSON響應:http://localhost:8087/RestServices/rest/profile/233.xml
>>我收到錯誤說HTTP狀態 - 406由此請求標識的資源只能根據請求「接受」標頭生成不可接受的特徵的響應。
技術詳情: 春4.0 的Hibernate 4.0 Spring MVC的。 RestController。
依賴/罐詳細信息:
ANTLR-2.7.7.jar
aopalliance-1.0.jar
com.mysql.jdbc_5.1.5.jar
commons- logging-1.2.jar
dom4j-1.6.1.jar
休眠公地的註解 - 4.0.5.Final.jar
休眠核心 - 4.3.6.Final.jar
休眠-的EntityManager-4.3.6.Final.jar
休眠-jpa-2.1-API-1.0.0.Final.jar
休眠驗證器-4.2.0.Final.jar
傑克遜 - 註解-2.4.1.jar
傑克遜 - 芯 - 2.4.4.jar
傑克遜核-ASL-1.9.0.jar
傑克遜 - 數據綁定-2.4.4.jar
傑克遜DATAFORMAT-XML-2.5.0。罐子
傑克遜 - JAXRS-1.9.2.jar
傑克遜映射器-ASL-1.9.0.jar
傑克遜-XC-1.9.2.jar
jandex-1.1.0.Final.jar
了Javassist-3.18.1-GA.jar
JAXB-API-2.2.jar
的jboss-測井3.1.3.GA.jar
JBoss的測井的註解-1.2.0.Beta1.jar
jboss-交易api_1.2_spec-1.0.0.Final.jar
的log4j-1.2.17.jar
的logback經典-0.9.jar
的logback核-0.9.6.jar
servlet的api.jar文件
SLF4J-API-1.6.1.jar
SLF4J-log4j13-1.0.1.jar
slf4j.jar
彈簧AOP-4.0.0.RELEASE.jar
彈簧方面-4.0.0.RELEASE.jar
彈簧豆-4.0.0.RELEASE.jar
彈簧集結SRC-4.0.0.RELEASE.jar
彈簧上下文4.0.0.RELEASE.jar
春天-context支撐-4.0.0.RELEASE.jar
彈簧芯4.0.0.RELEASE.jar
彈簧數據公地1.6.3.RELEASE.jar
彈簧數據JPA-1.4.1 .RELEASE.jar
彈簧表達-4.0.0.RELEASE.jar
彈簧框架-BOM-4.0.0.RELEASE.jar
彈簧儀器4.0.0.RELEASE。罐子
彈簧儀器Tomcat的4.0.0.RELEASE.jar
彈簧JDBC-4.0.0.RELEASE.jar
彈簧-JDBC。罐子
彈簧JMS-4.0.0.RELEASE.jar
彈簧消息傳遞4.0.0.RELEASE.jar
彈簧ORM-4.0.0.RELEASE.jar
彈簧OXM-4.0.0.RELEASE.jar
彈簧體檢查4.0.0.RELEASE.jar
彈簧-TX-4.0.0.RELEASE.jar
彈簧網絡4.0.0.RELEASE.jar
彈簧webmvc-4.0.0.RELEASE.jar
彈簧webmvc的portlet-4.0.0.RELEASE.jar
彈簧-websocket-4.0.0.RELEASE.jar
woodstox核-ASL-4.2.0.jar
DateRestController.java
@RestController
@RequestMapping("/rest")
public class DataRestController
{
@RequestMapping(value = "/profile/{number}", method =
RequestMethod.GET)
public
List<CustomerProfile>getCustomerProfile(@PathVariable("number")
String number)
{
return profileList;
}
}
ProfileModel.java
@XmlRootElement(name="profile")
@Entity
@Table(name = "profile")
public class Profile extends CommonBean
{
@Column(name = "email")
private String email;
@Column(name = "mobile")
private String mobile;
@Column(name = "DOB")
private Date dateOfBirth;
@XmlElement
public String getEmail()
{
return email;
}
public void setEmail(String email)
{
this.email = email;
}
public String getMobile()
{
return mobile;
}
public void setMobile(String mobile)
{
this.mobile = mobile;
}
public Date getDateOfBirth()
{
return dateOfBirth;
}
public void setDateOfBirth(Date dateOfBirth)
{
this.dateOfBirth = dateOfBirth;
}
}
控制器servlet.xml中
<beans>
<context:component-scan base-package="com.test" />
<mvc:annotation-driven />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/pages/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>`enter code here`
</bean>
</beans>
迄今爲止嘗試作爲上文所強調的,我試圖通過接受應用程序/ XML多個傑克遜罐子,我試過製作=「應用程序/ xml」 但沒有奏效。 請讓我知道我在上面的配置中丟失了什麼。它是罐子或一些註釋或XML配置?
缺少一些豆配置添加此配置。 –
@RomanC你可以具體嗎?你究竟是什麼意思? – user18181818
你爲什麼使用'annotation:driven'? –