我围绕 Spring 构建了以下 REST 服务。我想实现一个可以添加用户的 POST 方法。用户的数据在请求正文中,可以是 JSON/XML。我想要服务器端实现
- 自动将传入数据映射到 Java bean
- 并使用单一实现处理两种类型的数据(JSON/XML)。
我尝试过使用@ModelAttribute
inaddUser
方法,UserController
但将对象中的所有字段都设为空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
...
}