@@ -402,11 +402,12 @@ public void testBindingErrorWithFormatter() {
402
402
}
403
403
404
404
@ Test
405
- public void testBindingErrorWithStringFormatter () {
405
+ public void testBindingErrorWithParseExceptionFromFormatter () {
406
406
TestBean tb = new TestBean ();
407
407
DataBinder binder = new DataBinder (tb );
408
408
FormattingConversionService conversionService = new FormattingConversionService ();
409
409
DefaultConversionService .addDefaultConverters (conversionService );
410
+
410
411
conversionService .addFormatter (new Formatter <String >() {
411
412
@ Override
412
413
public String parse (String text , Locale locale ) throws ParseException {
@@ -417,6 +418,35 @@ public String print(String object, Locale locale) {
417
418
return object ;
418
419
}
419
420
});
421
+
422
+ binder .setConversionService (conversionService );
423
+ MutablePropertyValues pvs = new MutablePropertyValues ();
424
+ pvs .add ("name" , "test" );
425
+
426
+ binder .bind (pvs );
427
+ assertTrue (binder .getBindingResult ().hasFieldErrors ("name" ));
428
+ assertEquals ("typeMismatch" , binder .getBindingResult ().getFieldError ("name" ).getCode ());
429
+ assertEquals ("test" , binder .getBindingResult ().getFieldValue ("name" ));
430
+ }
431
+
432
+ @ Test
433
+ public void testBindingErrorWithRuntimeExceptionFromFormatter () {
434
+ TestBean tb = new TestBean ();
435
+ DataBinder binder = new DataBinder (tb );
436
+ FormattingConversionService conversionService = new FormattingConversionService ();
437
+ DefaultConversionService .addDefaultConverters (conversionService );
438
+
439
+ conversionService .addFormatter (new Formatter <String >() {
440
+ @ Override
441
+ public String parse (String text , Locale locale ) throws ParseException {
442
+ throw new RuntimeException (text );
443
+ }
444
+ @ Override
445
+ public String print (String object , Locale locale ) {
446
+ return object ;
447
+ }
448
+ });
449
+
420
450
binder .setConversionService (conversionService );
421
451
MutablePropertyValues pvs = new MutablePropertyValues ();
422
452
pvs .add ("name" , "test" );
@@ -580,9 +610,10 @@ public void testBindingErrorWithCustomFormatter() {
580
610
}
581
611
582
612
@ Test
583
- public void testBindingErrorWithCustomStringFormatter () {
613
+ public void testBindingErrorWithParseExceptionFromCustomFormatter () {
584
614
TestBean tb = new TestBean ();
585
615
DataBinder binder = new DataBinder (tb );
616
+
586
617
binder .addCustomFormatter (new Formatter <String >() {
587
618
@ Override
588
619
public String parse (String text , Locale locale ) throws ParseException {
@@ -593,12 +624,39 @@ public String print(String object, Locale locale) {
593
624
return object ;
594
625
}
595
626
});
627
+
596
628
MutablePropertyValues pvs = new MutablePropertyValues ();
597
629
pvs .add ("name" , "test" );
598
630
599
631
binder .bind (pvs );
600
632
assertTrue (binder .getBindingResult ().hasFieldErrors ("name" ));
601
633
assertEquals ("test" , binder .getBindingResult ().getFieldValue ("name" ));
634
+ assertEquals ("typeMismatch" , binder .getBindingResult ().getFieldError ("name" ).getCode ());
635
+ }
636
+
637
+ @ Test
638
+ public void testBindingErrorWithRuntimeExceptionFromCustomFormatter () {
639
+ TestBean tb = new TestBean ();
640
+ DataBinder binder = new DataBinder (tb );
641
+
642
+ binder .addCustomFormatter (new Formatter <String >() {
643
+ @ Override
644
+ public String parse (String text , Locale locale ) throws ParseException {
645
+ throw new RuntimeException (text );
646
+ }
647
+ @ Override
648
+ public String print (String object , Locale locale ) {
649
+ return object ;
650
+ }
651
+ });
652
+
653
+ MutablePropertyValues pvs = new MutablePropertyValues ();
654
+ pvs .add ("name" , "test" );
655
+
656
+ binder .bind (pvs );
657
+ assertTrue (binder .getBindingResult ().hasFieldErrors ("name" ));
658
+ assertEquals ("test" , binder .getBindingResult ().getFieldValue ("name" ));
659
+ assertEquals ("typeMismatch" , binder .getBindingResult ().getFieldError ("name" ).getCode ());
602
660
}
603
661
604
662
@ Test
@@ -990,7 +1048,7 @@ public String print(Integer object, Locale locale) {
990
1048
}, "age" );
991
1049
992
1050
MutablePropertyValues pvs = new MutablePropertyValues ();
993
- pvs .add ("age" , "" );
1051
+ pvs .add ("age" , "x " );
994
1052
binder .bind (pvs );
995
1053
996
1054
assertEquals ("argh" , binder .getBindingResult ().getFieldValue ("age" ));
0 commit comments