2016-03-29 15 views
0

だから私は、次のコントローラを持っている:Spring @RequestParam型不一致例外?

@RequestMapping(value = "/test.html", method = RequestMethod.POST) 
public String test(Model model, @RequestParam(value = "uid", required = true) Long uid) { 
    // logic to play with uid 
} 

uidタイプは、たとえばStringため、誤っている場合春スローん例外のどのタイプ?
ドキュメントからはConversionFailedExceptionのようですが、これはそれぞれのクラスの例外ハンドラでは検出されません。

@ExceptionHandler(value = {ConversionFailedException.class,}) 
@ResponseStatus(value = HttpStatus.NOT_ACCEPTABLE) 
public ModelAndView wrongParameterType(ConversionFailedExceptione,HttpServletRequest request){ 
    //log and things 
} 

私も巻き込まれTypeMismatchExceptionてみましたが、私は理由Beanプロパティを設定しようとすると、これがスローされるドキュメントから混乱しています。

投げられる例外の種類はいつ明らかですか?

+4

スローされた例外を見つけるためにスタックトレースを見ることはできませんか? – samlewis

+0

いくつかのテストの後、 'org.springframework.web.method.annotation.MethodArgumentTypeMismatchException'が常にスローされます。 – dambros

+0

コンソールを確認するか、Exception.classを捕まえてロガーなどを印刷するようにハンドラーを変更してください –

答えて

0

「uid」をString &として提供すると、ConversionFailedExceptionが予想されます。 しかし、ConversionFailedExceptionは通常、フィッティングコンバータであり、そのコンバータを見つけることができない場合に発生します。

まだ取得していない場合は、 questionに、ConversionFailedExceptionをどこから理解できるかが尋ねられます。

そして、まだ、テストの後、あなたは明らかにJavaがコンバージョンに応答したことを意味しますが文字列の整数

を変換することができませんでした 根本原因 としてはNumberFormatExceptionとMethodArgumentTypeMismatchExceptionがあることを確認することができます