我有以下REST服務建立在Spring周圍。我想實現一個可以添加用戶的POST方法。用戶的數據位於請求正文中,可以使用JSON/XML。我想服務器端實現春天綁定一個bean來休息post請求
- 使用單一的實現輸入的數據自動映射到Java bean的
- 和處理這兩種類型的數據(JSON/XML)。
我已經在UserController
addUser
法@ModelAttribute
嘗試,但得到的user
對象空各個領域。任何線索?
下面是Spring配置文件
<mvc:annotation-driven />
<context:component-scan base-package="com.rest.sg.controller" />
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</map>
</property>
<property name="defaultViews">
<list>
<!-- JSON View -->
<bean
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
</bean>
<!-- XML view -->
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<constructor-arg>
<bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.rest.sg.bean.User</value>
</list>
</property>
</bean>
</constructor-arg>
</bean>
</list>
</property>
<property name="ignoreAcceptHeader" value="true" />
</bean>
UserController類和ADDUSER方法
@Controller
public class UserController {
@RequestMapping(method=RequestMethod.POST, value="/user")
@ResponseBody
public User addUser(@ModelAttribute("user") User user) {
userService.addUser(user);
return user;
}
}
和用戶的Bean
@Entity
@XmlRootElement
@Table(name = "user", catalog = "blahblah")
public class User implements java.io.Serializable {
// Fields
// Getter , Setters
...
}
如果我使用'code' @ RequestBody,我在客戶端收到'code'HTTP狀態415。錯誤描述是'code'服務器拒絕了這個請求,因爲請求實體的格式不是所請求方法()的請求資源所支持的格式。 – 2013-04-24 05:57:30
您的請求是否具有內容類型'application/json'(或'application/xml')?你有沒有把傑克遜包括在你的類路徑中(如果你的請求是JSON)? – zeroflagL 2013-04-24 07:52:38
是的,我把傑克遜列入了課程路徑。我試圖用這兩種類型,即JSON/XML,因爲我想單一的方法來處理這兩種數據類型(在我的問題中的第2點) – 2013-04-25 13:23:08