SmartGwt RestDataSource с SpringMVC и кросс-клиентом

После большой работы у меня есть существующее серверное приложение веб-служб, работающее на Spring-RS, Spring MVC, контроллерах Spring, и эти контроллеры используют Джексона в среде Spring для преобразования ответов в JSON.

Вот часть WEB-INF / myproject-servlet.xml


    
        
          
             

                     
                        
                            
                        
                     
             
          
        
    



    



  
      
        
      
  

Это приложение веб-сервисов прекрасно работает! Я могу развернуть WAR на моего локального кота, и он нормально разворачивается. Я могу провести модульное тестирование контроллера, чтобы убедиться, что URL-адрес правильный и веб-приложение правильно настроено в Spring. Я могу нажать на URL и получить данные JSON точно так, как я ожидал. URL-адрес:

http://mylocalhost/myproject/invoices/invoiceId/1

возвращает 1 счет.

Сейчас я запускаю веб-приложение SmartGWT, бесплатную версию, и у меня есть контроллер RestDataScource. Я написал много веб-приложений SmartGWT раньше, и все эти приложения были всеобъемлющими: сущности, дао 's, уровень обслуживания, контроллеры и источники данных. При этом кросс-клиентские проблемы вообще не возникали при условии, что контроллеры и источники данных были в одном приложении. И я не против повторения этого, но я хочу попытаться разделить их на части.

Я только недавно увидел, что это не работает !!! С моим веб-приложением SmartGWT, работающим локально в Jetty для режима разработки. Начальный URL:

     http://mylocalhost:8888/myapp

И когда это пытается вызвать бэк-энд на

    http://mylocalhost:8080/my-ws, then my listgrid gives me a warning message.

Если я могу просто добавить одну строку: RPCManager.setAllowCrossDomainCalls (true); Должен ли я добавить это в моем RESTDataSource? Куда мне добавить это? И это действительно заставит все работать? Что-нибудь еще, что я должен добавить?

Итак, я смотрел на XJSONDataSource и увидел, что мне нужно внести несколько изменений в мой RestDataSource, чтобы преобразовать его в XJsonDataSource. Здесь есть отличная информация с другой публикацией, и они предложили добавить:

   // Where do I put this line?   the controller or the datasource
   String callbackString = request.getParameter("callback");

   // Where do I put this code?  the controller or the datasource
   response.setContentType("text/X-JSON");
   response.getWriter().write( callbackString + " ( " + JSONstring + " ) " );
   response.setStatus(HttpServletResponse.SC_OK);  

Я не уверен, где этот код идет, поэтому мне нужна дополнительная помощь там. Что касается контроллера, вот часть того, как он выглядит:

    @RequestMapping(value = "/invoiceId", method = RequestMethod.GET, headers = "Accept=application/json")
    public @ResponseBody
        InvoiceDetailDTO getContactTypeByUserId(@RequestBody String invoiceNumber)
     {
         InvoiceDetailDTO invoiceDetailDto = invoiceService.getInvoiceDetail(invoiceNumber);

        // invoiceDetailDto is automatically converted to JSON by Spring
        return invoiceDetailDto;
     }

В приведенном выше коде с "запрос" а также "ответ" должен войти в контроллер, как мне это сделать?

В конечном счете, яЯ хотел бы просто использовать мой RestDataSource и настроить его так, как я хочу, и игнорировать любые из этих межсайтовых проблем. Если мне нужно использовать XJSONDataSource, мне просто нужны несколько хороших примеров и пример того, как настроить мои контроллеры, если это необходимо.

Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос