2012-02-13 8 views
0

私は取得しています、次のエラー...ExtJS4と春MVC3 POSTエラー

POST http://localhost:8080/mytest/admin/user/delete?_dc=1329102157683 415(サポートされていないメディアタイプ)

が、私はこのエラーを取得します()。

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(); 

スプリングコントローラ..、

 @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> 

お知らせください。

ありがとう、

+0

私は、ヘッダー= "Content-Type = application/json"を試しましたが、今まで成功していませんでした... :(' – gpa

+0

あなたはそのヘッダーの設定を削除しようとしましたか? – dbrin

+0

はい、 @RequestMapping。フォーラムディスカッションに基づいてそのオプションを追加しました。 – gpa

答えて

0

パス内のすべてのクラスをステップ実行してデバッグした後、ジャクソンは例外をスローせずに「ダンス」していることがわかりました。 pojo "User"の属性の1つで失敗しました。オブジェクトを含むjava.util.Mapを単純にデシリアライズすることはできません。奇妙なことは、すべてのことを問題なしでシリアライズできることです!

0

ジャクソンは本当にリストのオブジェクトをデシリアライズすることができます。
私はあなたの場合には、それは私の知る限りRESTプロキシは、常にバッチ操作の(あなたはなかれオブジェクトの一覧を取得するのです理由
である)にしようと知っているよう@RequestBody List<User> users
されるべきだと思います。