2012-02-13 2 views
0

Я получаю следующее сообщение об ошибке ...ExtJS4 и Spring MVC3 сообщение об ошибке

POST http://localhost:8080/mytest/admin/user/delete?_dc=1329102157683 415 (Unsupported Media Type)

Я получаю эту ошибку, когда ExtJS 4 сетки, пытается синхронизировать().

api: { 
     read:'admin/user/list', 
     create:'admin/user/add', 
     update:'admin/user/update', 
     destroy:'admin/user/delete' 
    }, 
    reader: { 
     type: 'json', 
     root: 'users', 
     totalProperty: 'totalRecords', 
     successProperty: 'success' 
    }, 
    writer: { 
     type: 'json', 
     writeAllFields: true, 
     encode: false//, 
     //root: 'user' 
    }, 

..... ......

this.getUsersStore().remove(this.selectedUser); 
    this.getUsersStore().sync(); 

Spring контроллер ..,

 @Controller 
     @Scope("request") 
     public class UserFormController { 
      private static final long serialVersionUID = 5152065663578866866L; 
      private static final Logger log = Logger.getLogger(UserFormController.class); 

      @RequestMapping(method = RequestMethod.POST, value = "/admin/user/delete", headers = "Accept=application/json") 
      @PreAuthorize("hasAuthority('ROLE_ADMIN')") 
      public @ResponseBody 
      Map<String, ? extends Object> delete(@RequestBody 
      User user) { 
       if (log.isTraceEnabled()) { 
        log.trace("Entering method 'delete'"); 
       } 
       Map<String, Object> modelMap = new HashMap<String, Object>(); 
       List<Object> args = new ArrayList<Object>(); 
       modelMap.put("success", true); 
       return modelMap; 
      } 

конфигурации Spring ....

  <!-- JSON Converters --> 
      <bean id="jsonHttpMessageConverter" 
       class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> 
      </bean> 

      <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
       <property name="messageConverters"> 
        <list> 
         <ref bean="jsonHttpMessageConverter" /> 
        </list> 
       </property> 
      </bean> 

      <!-- uses the Jackson library's ObjectMapper to render the response content 
       as JSON --> 
      <bean id="jacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper" /> 

      <bean id="mappingJacksonJsonView" 
       class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"> 
       <property name="objectMapper" ref="jacksonObjectMapper"/> 
      </bean> 

      <!-- Content Delegate --> 
      <bean 
       class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
       <property name="mediaTypes"> 
        <map> 
         <entry key="html" value="text/html" /> 
         <entry key="json" value="application/json" /> 
        </map> 
       </property> 
       <property name="viewResolvers"> 
        <list> 
         <ref bean="viewResolver" /> 
        </list> 
       </property> 
       <property name="defaultViews"> 
        <list> 
         <ref bean="mappingJacksonJsonView" /> 
        </list> 
       </property> 
       <property name="favorPathExtension" value="false" /> 
       <property name="favorParameter" value="true" /> 
       <property name="useNotAcceptableStatusCode" value="true" />  
      </bean> 

Дайте мне знать,

Thanks,

+0

Я попытался, headers = "Content-Type = application/json", но пока не удалось добиться успеха ... :(' – gpa

+0

Вы пытались удалить этот заголовок config? – dbrin

+0

Да, изначально я использовал значение и метод из @RequestMapping. Я добавил этот вариант, основанный на обсуждениях на форуме. Любые другие идеи? – gpa

ответ

0

После отладки, пройдя через каждый класс в пути ... обнаружил, что Джексон просто «танцует», не бросая никаких исключений! Он не срабатывал по одному из атрибутов на pojo «Пользователь». Он просто не может десериализовать java.util.Map, содержащий объекты. Странно то, что он может сериализовать все без проблем!

0

Джексон действительно может deserialze List of Objects, ему просто нужно знать Тип этих.
Я думаю, в вашем случае это должно быть @RequestBody List<User> users
Насколько я знаю REST Proxy всегда пытается партии операции (которая является причиной
вы получите это все дни список объектов).

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