Простой запрос JSON-запроса к веб-сервису spring на основе аннотаций, не способный отменить привязку к запросу json к объекту java с использованием jackson

#web-services #spring-mvc #jsonp

#веб-сервисы #spring-mvc #jsonp

Вопрос:

Я создал простой запрос JSON-запроса к веб-сервису spring на основе аннотаций, столкнувшийся с проблемой в методе веб-сервиса, не способный отменить привязку к запросу json к объекту java с использованием jackson.

ниже приведен код, который я написал. пожалуйста, помогите мне в исправлении проблемы.

Заранее спасибо!!

—Запрос JSON

 var client = {
                "clientId":$('#client_id').val(),
                "firstName":$('#first_name').val(),
                "lastName":$('#last_name').val(),
                "companyName":$("#company_name").val(),
                "fileNo":$("#file_no").val(), 
                "resiAddr1":$("#resi_addr1").val(),
                "resiAddr2":$("#resi_addr2").val(),
                "resiAddr3":$("#resi_addr3").val(),
                "city":$("#city").val(),
                "pinCode":$("#pin_code").val(),
                "mobileNo1":$("#mobile1").val(),
                "mobileNo2":$("#mobile2").val(),
                "mobileNo3":$("#mobile3").val()
            };

            var jsonReqString = JSON.stringify(client, function(key, value) {
                if (typeof value == "number")
                    return value;
                if (typeof value == "boolean")
                    return value;
                return value == "" ? null : value;
            });


            alert('create request '   jsonReqString);

            $.ajax( {
                url: "/Spring3Hibernate4Annotation/service/create",
                type: "POST",
                data: jsonReqString,
                dataType: "jsonp",
                jsonp: "cspcb",
                contentType: "application/json",
                timeout: 60000,
                xhrFields: {
                    withCredentials: false
                },
                beforeSend: function(xhrObj){
                },
                success: function(retdata){
                    alert("retdata = "   retdata);
                    var retdata_string = JSON.stringify(retdata, function(key, value) {
                        if (typeof value == "number")
                            return value;
                        if (typeof value == "boolean")
                            return value;
                        if (typeof value === "string")
                            {
                                value = $.trim(value);                      
                            }
                        if (key == 'clientId' amp;amp; value== "")
                            return "123321";

                        return value == "" ? "Rajiv" : value;
                    });

                    var Objs = jQuery.parseJSON(retdata_string);
                    alert(Objs);
                    console.log("retdata_string data="   retdata_string);

                },
                error : function(jqXHR, textStatus, errorThrown) {
                        alert(
                                "Errror"
                                          textStatus, errorThrown);
                }
            });

        }); 
  

—Web.xml

 <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:/spring/applicationContext.xml, classpath:/spring/hibernateContext.xml</param-value>
    </context-param>

    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value></param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <filter>
        <filter-name>JSON-P Callback Filter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
        <init-param>
            <param-name>targetBeanName</param-name>
            <param-value>jsonpCallbackFilter</param-value>
        </init-param>
        <init-param>
            <param-name>targetFilterLifecycle</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>JSON-P Callback Filter</filter-name>
        <url-pattern>/service/*</url-pattern>
    </filter-mapping>

</web-app>
  

—ApplicationContext.xml

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/mvc
                           http://www.springframework.org/schema/mvc/spring-mvc.xsd
                           http://www.springframework.org/schema/context
                           http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="com.project"/>
    <context:annotation-config />
    <mvc:annotation-driven> 
    <mvc:message-converters register-defaults="false">
        <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" >
            <property name="objectMapper">
                <bean class="com.project.wrapper.CustomObjectMapper"/>
            </property>
        </bean>
    </mvc:message-converters>
    </mvc:annotation-driven>

    <bean id="jsonpCallbackFilter" class="com.project.wrapper.JsonpCallbackFilter" />
    <mvc:resources mapping="/resources/**" location="/, classpath:/resources" />
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

</beans>
  

—Controller.java

 import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.project.entity.Client;
import com.project.service.GenericService;

@Controller
public class ClientController {


    @Autowired
    GenericService genericService;


    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String showClientForm(Model model) {
        model.addAttribute("client",new Client());
        return "index";
    }


    @RequestMapping(value = "/service/create", method = RequestMethod.POST)

    public @ResponseBody Client saveClient(@RequestBody Client client) {
        Client existing = genericService.findByClientName(client.getClientId());
        if (existing != null) { 
            return existing;
        }
        genericService.saveClient(client);
        return client;
    }
  

Комментарии:

1. Похоже, что ваши значения полей json типа string не заключены в кавычки («) вокруг них

2. Вот мой запрос JSON: я не вижу никаких проблем, а также проверен с помощью онлайн-валидатора, и он показывает действительный JSON.{ «ClientID»: null, «FirstName»: «test», «LastName»: «new», «CompanyName»: «comp», «city»: null, «pinCode»: null }

3. Вот мой запрос JSON: я не вижу никаких проблем, а также проверен с помощью онлайн-валидатора, и он показывает действительный JSON.

4. Вот мой запрос JSON: я не вижу никаких проблем, а также проверен с помощью онлайн-валидатора, и он показывает действительный JSON.