2016-11-07 4 views
0

私はこの問題を開発の早い段階で経験していませんでしたが、別の問題をデバッグするときにこれが起きていることに気がつきました。これは、すべてのRESTエンドポイントで発生したが、以下の例である:@RequestBodyはPOJO型とBindingResultに制限されていませんhasErrors always false

@RestController 
@RequestMapping("/editlisting") 
public class EditParkingSpaceListingController { 
@Autowired 
ParkingSpaceRepository parkingSpaceRepository; 
@Autowired 
ParkingSpaceListingRepository parkingSpaceListingRepository; 

@RequestMapping(method = RequestMethod.PUT) 
public ResponseEntity<String> editParking(@RequestBody ParkingSpaceListingClient pslc, BindingResult result) { 
    if (result.hasErrors()) { 
     return new ResponseEntity<String>("", HttpStatus.BAD_REQUEST); 
    } 
// Code to save pslc data to database. 

私は

{ } 

として身体にHTTPリクエストを送信した場合、私は200応答を取得し、私はMongoDBのを確認したときに、コレクションに新しい空のドキュメントがあります。大括弧のない空のボディを送信した場合、予想通り400を返します。POJOに存在しないランダムなガベージデータを持つボディを送信すると、BindingResultはエラーを受け取りません。作成した。

+0

スプリングブート1.4.1で予想通り400を返します。あなたのプロジェクトでは、正確なスプリングブートバージョンは何ですか? –

答えて

0

あなたが入力文書の検証については、以下の手順を実行する必要があります:

(1)あなたのParkingSpaceListingClient Beanクラスにjavax.validationパッケージの制約を(のような@NotNull@Size、等。)を追加します。

(2)コントローラメソッドに@Validated annotationを追加して、BindingResultオブジェクトに検証エラーをキャプチャします。

入力検証の詳細についてはhereをご覧ください。

関連する問題