2016-07-27 5 views
1

私のコントローラではサポートされていません。'削除' の方法は、春

@RequestMapping(value = "/list/{fn}", method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_VALUE) 
public @ResponseBody ResponseEntity<Record> deleteUser(@PathVariable("fn") String filename) { 
    System.out.println("Fetching & Deleting data " + filename); 

    Record user1 = rep.findByfilename(filename); 
    if (user1 == null) { 
     System.out.println("Unable to delete." + filename + " not found"); 
     return new ResponseEntity<Record>(HttpStatus.NOT_FOUND); 
    } 

    rep.deleteByfilename(filename); 
    return new ResponseEntity<Record>(HttpStatus.NO_CONTENT); 
} 
} 

私のJSコード:

$scope.del = function (record) { 
     if (confirm('Do you really want to delete?')){ 
      $http['delete']('/camera/list/' + record.filename).then(function() { 
       $scope.records.splice($scope.records.indexOf(record), 1); 
      }); 
     } 
     }; 

マイアクセス設定:

http 
    .authorizeRequests() 
    .antMatchers("/", "/home").permitAll() 
    .antMatchers("/imageview", "/hello").access("hasRole('USER')") 
    .antMatchers("/camera/list").permitAll() 
    .antMatchers("/camera/store").permitAll() 
    .antMatchers("/camera/list/{fn}").permitAll() 
    .antMatchers("/imageview2", "/hello2").access("hasRole('ADMIN')").and() 
    .formLogin().and().exceptionHandling() 
    .accessDeniedPage("/access-denied"); 

    http 
     .authorizeRequests() 
      .antMatchers("/", "/home").permitAll() 
      .anyRequest().authenticated() 
      .and() 
     .formLogin() 
      .loginPage("/login").permitAll() 
      .and() 
     .logout() 
      .permitAll(); 
} 

エラー私は取得しています:

DELETE 
XHR 
http://localhost:8086/camera/list/a0c8918e4b088de4a5c7796e3eb11229 [HTTP/1.1 405 Method Not Allowed 22ms] 

最初は、私の削除機能は動作しますが、私は春のセキュリティを使用した後、私はサポートされていないこのエラーが発生しました。誰でも助けることができますか?オンラインでヘルプを探してみましたが、解決策はありませんでした。

答えて

0

私は春のセキュリティアクセス設定にhttp.csrf()。disable()を追加してこの問題を解決しました。

0

HiddenHttpMethodFilterをweb.xmlに追加します。

+0

web.xmlファイルがありません –

+0

次に、WebApplicationInitializerを実装しているクラス – Alexander

+0

別の新しいクラスを作成しますか? –

0

コントローラの設定(/camera/list/{fn})の定義に使用されるパターンの代わりに、antMatcherに/camera/list/**のようなワイルドカードパターンを使用して、特定のアイテムにアクセスできるようにしてください。

+0

まだ同じエラー –

+0

あなたのコントローラクラスは '/ camera'に対して' RequestMapping'を割り当てました、そうですか?メソッドアノテーションは '/ list/{fn}'のみを宣言します。無効なURLに 'GET'以外の何かをすると、Springが405を返すことに注意してください。 –

+0

私は、春のセキュリティがdeleteメソッドを使用することを制限していると思います。 –

関連する問題