2014-04-02 69 views
1

我創建了一個Jungster應用程序yo jhipster並創建了一個實體hikelist yo jhipster:entity hikelist

當我試圖保存我的實體使用jtimester生成的服務和控制器我得到一個不良請求400.我找不到這個錯誤的原因。 java資源沒有被調用。有沒有辦法在我的http請求中獲得有關此問題原因的更多信息?

我的後端資源:

@RequestMapping(value = "/rest/hikelists", 
    method = RequestMethod.POST, 
    produces = "application/json") 
@Timed 
public void create(@RequestBody HikelistDTO hikelist) { 
    log.debug("REST request to save Hikelist : {}", hikelist); 
    hikelistRepository.save(hikelist); 
} 

的在客戶端創建一個HTTP調用函數:

$scope.create = function() { 
Hikelist.save($scope.hikelist, 
    function() { 
    $scope.hikelists = Hikelist.query(); 
    $('#saveHikelistModal').modal('hide'); 
    $scope.clear(); 
    }); 
}; 

我錯過了什麼?還有什麼可配置的嗎?

謝謝。

+0

我過同樣的問題,我自己今晚的工作...希望明天我會爲你找出答案。 – degreesightdc

+0

我正面臨着同樣的錯誤... @ user2495290你解決了嗎? – andreapier

回答

2

問題是您的JSON沒有正確序列化到您的DTO中,很可能是因爲您不想親手觸摸ID或其他值,而是想讓您的數據庫進行管理。我面臨着同樣的問題,找到了一個不錯的,乾淨的解決方法,在不改變角都:

  1. 添加了兩個新的方法,以您的DTO,以便它可以從一個JSON字符串被實例化,或通過空:

    public UserDTO(String firstName, String lastName, String email, Map<String, Boolean> roles) { 
        this.firstName = firstName; 
        this.lastName = lastName; 
        this.email = email; 
        this.roles = roles; 
    } 
    

    public static UserDTO fromJsonToUserDTO(String json) { 
        return new JSONDeserializer<UserDTO>() 
        .use(null, UserDTO.class).deserialize(json); 
    } 
    
  2. 更新您的服務接受一個JSON結構而不是直接DTO,然後轉換爲DTO在線,只用你的萬特場d。

    @RequestMapping(value = "/rest/account", 
         method = RequestMethod.POST, 
         produces = "application/json") 
    @Timed 
    public void saveAccountFromJSON(@RequestBody String json) throws IOException { 
        UserDTO userDTO = UserDTO.fromJsonToUserDTO(json); 
        userService.updateUserInformation(userDTO.getFirstName(), userDTO.getLastName(), userDTO.getEmail()); 
    } 
    
+0

謝謝,好吧,只需在我的DTO對象中添加一個空的構造函數即可解決問題。 – user1260928