Skip to content

Commit 39b2387

Browse files
committed
Convert blank strings to null for dates. Fixes #10007
1 parent d85ff44 commit 39b2387

File tree

3 files changed

+27
-5
lines changed

3 files changed

+27
-5
lines changed

grails-databinding/src/main/groovy/org/grails/databinding/converters/DateConversionHelper.groovy

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ class DateConversionHelper implements ValueConverter {
3737
Object convert(value) {
3838
Date dateValue
3939
if (value instanceof String) {
40+
if(!value) {
41+
return null
42+
}
4043
def firstException
4144
formatStrings.each { String format ->
4245
if (dateValue == null) {

grails-databinding/src/main/groovy/org/grails/databinding/converters/FormattedDateValueConverter.groovy

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,17 @@ class FormattedDateValueConverter implements FormattedValueConverter {
3131
if(value instanceof Date) {
3232
return value
3333
}
34-
def fmt = new SimpleDateFormat(format)
35-
fmt.lenient = false
36-
fmt.parse((String) value)
34+
else if(value instanceof CharSequence) {
35+
String dateStr = value.toString()
36+
if(!dateStr) {
37+
return null
38+
}
39+
else {
40+
def fmt = new SimpleDateFormat(format)
41+
fmt.lenient = false
42+
fmt.parse((String) value)
43+
}
44+
}
3745
}
3846

3947
Class<?> getTargetType() {

grails-databinding/src/test/groovy/org/grails/databinding/converters/DateConversionHelperSpec.groovy

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,20 @@ class DateConversionHelperSpec extends Specification {
7777
def helper = new DateConversionHelper()
7878

7979
when:
80-
helper.convert ''
80+
def date = helper.convert ''
8181

8282
then:
83-
thrown ParseException
83+
date == null
84+
}
85+
86+
void 'Test formatted an empty String'() {
87+
given:
88+
def helper = new FormattedDateValueConverter()
89+
90+
when:
91+
def date = helper.convert '', "yyMMdd"
92+
93+
then:
94+
date == null
8495
}
8596
}

0 commit comments

Comments
 (0)