2016-03-31 7 views
1

私は自分のCRUDを抽象化して、必要なメソッドを持つ抽象クラスを作成していました。私はそれを完了しましたが、私は挿入(POST)と更新(PUT)の要求を送信するときに、フレームワークは具体的なクラスのために< @RequestBody T>を変換しません。 "createdAction"または "updateAction"と呼ばれるメソッドは機能しません。抽象クラス@RestController Spring 4 - @ResponseBodyエラー

@RestController 
@RequestMapping("/user") 
public class UserWebResource extends AbstractWebResource<UserEntity> { } 

public abstract class AbstractWebResource<T extends PersistenceEntity> { 

    @RequestMapping(method = RequestMethod.POST, produces = "application/json") 
    public ResponseEntity<T> createAction(@RequestBody T dataEntity, HttpSession session) { 
     dataEntity = rule.save(dataEntity); 

     if (dataEntity.hasErrors()) { 
      return new ResponseEntity<T>(dataEntity, HttpStatus.BAD_REQUEST); 
     } 

     return new ResponseEntity<T>(dataEntity, HttpStatus.CREATED); 
    } 

    @RequestMapping(value = "/{id}", method = RequestMethod.PUT, produces = "application/json") 
    public ResponseEntity<T> updateAction(@PathVariable("id") Integer id, @RequestBody T dataEntity, HttpSession session) { ... } 
} 

__エラーPOST電子

GRAVE PUT:経路に関連して[ディスパッチャ] [/アプリ]例外をスローサーブレットためのServlet.serviceを()要求処理が失敗しました。入れ子にされた例外はjava.lang.IllegalStateException:引数型の不一致 HandlerMethod詳細: コントローラ[br.inf ... web.resource.UserWebResource] メソッド[public org.springframework.http.ResponseEntity br.inf ... web .resource.AbstractWebResource.updateAction(java.lang.String、T、javax.servlet.http.HttpSession)]

+0

それが@Cootri編集さAbstractWebResource – Cootri

+0

のあなたの実装を示し、 –

答えて

0

フレームワークのマーシャリングに問題があるようです。

Jackson 4.2 & Spring 4.2でジェネリック型を使用することはできません。Jackson依存バージョンを2.6.6にロールバックするか、Spring 4.3を使用する必要があります(出てくるときに)。

source