Spring将bean绑定到rest post请求
我有以下关于春天的休息服务。我想实现一个POST方法,它可以添加用户。用户的数据位于请求体中,可以是JSON/XML格式。我想要服务器端实现Spring将bean绑定到rest post请求,rest,spring-mvc,Rest,Spring Mvc,我有以下关于春天的休息服务。我想实现一个POST方法,它可以添加用户。用户的数据位于请求体中,可以是JSON/XML格式。我想要服务器端实现 自动将传入数据映射到JavaBean 并使用单个实现处理这两种类型的数据(JSON/XML) 我在UserController的addUser方法中尝试了@modeldattribute,但在user对象中使所有字段都为空。有线索吗 这是Spring配置文件 <mvc:annotation-driven /> <context:comp
UserController
的addUser
方法中尝试了@modeldattribute
,但在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>
和用户Bean
@Entity
@XmlRootElement
@Table(name = "user", catalog = "blahblah")
public class User implements java.io.Serializable {
// Fields
// Getter , Setters
...
}
您的控制器需要知道如何映射数据。默认设置是将请求参数映射到对象的属性上 如果发送的JSON表示
用户
对象,则可以尝试
public User addUser(@RequestBody User user) {
您的控制器需要知道如何映射数据。默认设置是将请求参数映射到对象的属性上 如果发送的JSON表示
用户
对象,则可以尝试
public User addUser(@RequestBody User user) {
这样做:
@RequestMapping(value="/persons", method = RequestMethod.POST,
headers="Accept=*/*",
consumes="application/json")
public User addUser( @RequestBody User u){
//Code.
}
发送请求时,发送标头
Content-Type:application/json //This is important
Accept: application/json
这样做:
@RequestMapping(value="/persons", method = RequestMethod.POST,
headers="Accept=*/*",
consumes="application/json")
public User addUser( @RequestBody User u){
//Code.
}
发送请求时,发送标头
Content-Type:application/json //This is important
Accept: application/json
如果我使用
code
@RequestBody,我将在客户端收到code
HTTP状态415。错误描述为code
服务器拒绝了此请求,因为请求实体的格式不受请求方法()的请求资源支持。您的请求的内容类型是否为application/json
(或application/xml
)?您的类路径中是否包含Jackson(如果您的请求是JSON)?是的,我的类路径中包含Jackson。我尝试使用这两种类型,即JSON/XML,因为我希望使用一种方法来处理这两种数据类型(我的问题中的第2点)。您的客户机发送什么内容类型?这可能是一个多部分请求吗?客户端可以发送JSON或XML。没有请求不能是多部分的如果我使用code
@RequestBody,我在客户端接收到code
HTTP状态415。错误描述为code
服务器拒绝了此请求,因为请求实体的格式不受请求方法()的请求资源支持。您的请求的内容类型是否为application/json
(或application/xml
)?您的类路径中是否包含Jackson(如果您的请求是JSON)?是的,我的类路径中包含Jackson。我尝试使用这两种类型,即JSON/XML,因为我希望使用一种方法来处理这两种数据类型(我的问题中的第2点)。您的客户机发送什么内容类型?这可能是一个多部分请求吗?客户端可以发送JSON或XML。没有请求不能是多部分的,我希望这个方法能够处理两种数据类型,即XML/JSON(我问题的第2点)。我认为这是可能的,但如何实现呢?您需要contentnegotingviewresolver
我想我已经在使用contentnegotiationviewsolver
了,但工作不正常。实际上,我希望此方法能够处理两种数据类型,即XML/JSON(我问题的第2点)。我认为这是可能的,但如何实现?您需要contentnegotingviewresolver
我想我已经在使用contentnegotiationviewsolver
了,但工作不正常