Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring将bean绑定到rest post请求_Rest_Spring Mvc - Fatal编程技术网

Spring将bean绑定到rest post请求

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

我有以下关于春天的休息服务。我想实现一个POST方法,它可以添加用户。用户的数据位于请求体中,可以是JSON/XML格式。我想要服务器端实现

  • 自动将传入数据映射到JavaBean
  • 并使用单个实现处理这两种类型的数据(JSON/XML)
  • 我在
    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
    了,但工作不正常