2016-08-06 54 views
1

我有一個使用REST創建CRUD webservice的maven項目。 如果我使用這個:實現webservice的接口

@GET 
@Path("/getallfornecedores") 
@Produces("application/json;") 
public Fornecedor getAllFornecedores(){ 
    Fornecedor f = new Fornecedor(); 
    f.setName("Bruno"); 
    return f; 
} 

我的代碼工作正常。但是,我想用一個接口實現,所以我這樣做:

private ICrud crud; 

@GET 
@Path("/getallfornecedores") 
@Produces("application/json;") 
public Fornecedor getAllFornecedores(){ 
    return crud.getAllFornecedores(); 
} 

接口:

public interface ICrud { 
    public Fornecedor getAllFornecedores(); 
} 

和實現:

public class Crud implements ICrud{ 
    public Fornecedor getAllFornecedores(){ 
     Fornecedor fornecedor = new Fornecedor(); 
     fornecedor.setId(1); 
     fornecedor.setName("Bruno"); 
     fornecedor.setEmail("[email protected]"); 
     fornecedor.setComment("OK"); 

     return fornecedor; 
    } 
} 

但是當我這樣做,我得到了出現以下錯誤:

The RuntimeException could not be mapped to a response, re-throwing to the HTTP container 
    java.lang.NullPointerException 

這是爲什麼發生?在此先感謝

+0

並icrud例如initated? icrud = new Crud()並且發佈所有異常日誌 –

+0

是的,就是這樣!謝謝!! –

+0

很高興幫助...所以我會在這裏發佈一個答案,有人在尋找相同的問題可以幫助 –

回答

1

您需要創建icrud對象傳遞

試試這個

public interface ICrud { 
    public Fornecedor getAllFornecedores(); 
} 

public class Crud implements ICrud{ 
    public Fornecedor getAllFornecedores(){ 
     Fornecedor fornecedor = new Fornecedor(); 
     fornecedor.setId(1); 
     fornecedor.setName("Bruno"); 
     fornecedor.setEmail("[email protected]"); 
     fornecedor.setComment("OK"); 

     return fornecedor; 
    } 
} 

public class Controller { 


private ICrud crud = new Crud(); 


@GET 
@Path("/getallfornecedores") 
@Produces("application/json;") 
public Fornecedor getAllFornecedores(){ 
    return crud.getAllFornecedores(); 
} 

} 
0

謝謝mithat konuk。該解決方案實例化了與實現的接口。