2011-09-20 4 views
2

У меня есть приложение Spring REST, которое может сортировать объект в JSON при возникновении запроса GET. Однако что мне делать для методов POST. Я отправляю объект JSON, но он не может отменить его в Java-объект. Вот метод моего контроллера:Как развязать объект JSON с классом Java?

@RequestMapping(value = "/user", method = RequestMethod.POST) 
public void createUser(HttpServletResponse response, @RequestBody User user) { 
    ... 
    response.setStatus(HttpServletResponse.SC_OK); 
} 

Я посылаю мой JSON так:

 var userName = $('#userName').val(); 
     var password = $('#password').val(); 
     var mail = $('#mail').val(); 
     var admin = $("#admin").is(':checked'); 
     var user = {userName: userName, password: password, mail: mail, admin:admin}; 
     $.ajax({ 
      async : false, 
      type: 'POST', 
      contentType: 'application/json', 
      url: '/sfd/user', 
      data: user, 
      dataType: 'json', 
      success: function(data) { 
       ... 
      }, 
      error: function(data) { 
       ... 
      } 
     }); 

PS: здесь: http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/ он говорит:

Если есть подтверждение ошибки, HTTP 400 возвращается с сообщениями об ошибке , в противном случае возвращается HTTP 200.

У меня 400 ошибок запроса. Может быть, проблема связана с этим?

PS2: Должен ли я отправлять объект User после того, как я установил все его элементы? Я имею в виду, что объект User имеет некоторые другие атрибуты, то есть адрес, но я не устанавливаю и не отправляю его с клиента.

PS3: Когда я отлаживаю метод excception AbstractHandlerExceptionResolver, я вижу эту ошибку. Он говорит, что «u» - неопределенный символ (я протестировал его, что «u» - это первый ключ JSON => имя_пользователя).

+0

так , что происходит вместо этого? – Bozho

+0

@Bozho, этот вопрос связан с этим http://stackoverflow.com/questions/7481055/sending-json-data-to-server-error, он дает 400 ошибок с неправильным запросом – kamaci

+0

Есть ли у вас предложение? – kamaci

ответ

2

Вы должны иметь следующие параметры в вашем XML:

<context:annotation-config/> 

, а затем, чтобы убедиться, что джексон банка находится в вашем пути к классам:

в моих проектах я предпочитаю, чтобы установить его в качестве Spring Bean:

будет десериализовать ваши данные json объекту.

Вы можете прочитать его больше об этом здесь:

http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/

+0

У меня еще 400 ошибок с ошибкой. Мой вопрос связан с этим: http://stackoverflow.com/questions/7481055/sending-json-data-to-server-error – kamaci

0

В разделе @RequestMapping набор заголовков принимать приложения/JSON, а затем попробуйте настроить это в контексте приложения

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver" p:order="1"> 
<property name="mediaTypes"> 
    <map> 
     <entry key="json" value="application/json" /> 
    </map> 
</property> 

<property name="defaultViews"> 
    <list> 
     <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" /> 
    </list> 
</property> 
</bean> 
+0

Он дает ошибку при p: order = "1", потому что он хочет префикса для beans? – kamaci

+0

Место xmlns: p = "http://www.springframework.org/schema/p" в объявлении пространства имен элемента beans весеннего контекста – geez

 Смежные вопросы

  • Нет связанных вопросов^_^