2016-03-29 26 views
0

Yani ben şu denetleyicisi vardır:Spring @RequestParam Tür uyuşmazlığı istisnası?

@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 tipi örneğin String için, yanlış olduğunda istisna ne tür Bahar atar ki?
Belgelerden, ConversionFailedException gibi görünüyor, ancak bu, ilgili sınıf için bir istisna işleyicisinde yakalanmadı.

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

Ben de yakalanır TypeMismatchException ile çalıştım, ama çünkü bir fasulye özelliğini ayarlamak çalışırken bu atılır dokümanlardan karıştı.

Hangi türden istisnanın ne zaman atılacağını açıklar mısınız?

+4

Atılan istisnayı bulmak için yığın izine bakamaz mısınız? – samlewis

+0

Birkaç testten sonra, 'org.springframework.web.method.annotation.MethodArgumentTypeMismatchException' her zaman atılır. – dambros

+0

ya da Exception.class'ı yakalamak ve bir kaydediciyi ya da bir şeyi yazdırmak için işleyicinizi konsol ya da değiştirerek kontrol edin –

cevap

0

Dedikodu & olarak 'uid' sağlarsanız, ConversionFailedException bekliyorsunuz. Ancak, ConversionFailedException genellikle, dönüştürücü ve java dönüştürücü bulamıyor olabilir olduğunda oluşur.

Hala bulamadıysanız, bir kez ConversionFailedException öğelerini anlayabileceğiniz bir kişi tarafından sorulduğunda question.

Ve yine, test sonrasında, açıkça java dönüşümünüze cevap veren fakat Dize tamsayı -

attı anlamına gelir NumberFormatException olarak kök nedeni ile MethodArgumentTypeMismatchException olmadığını kontrol edebilirsiniz
İlgili konular