diff --git a/lib/GADS/Datum/String.pm b/lib/GADS/Datum/String.pm index fd23b7276..400216153 100644 --- a/lib/GADS/Datum/String.pm +++ b/lib/GADS/Datum/String.pm @@ -62,7 +62,8 @@ after set_value => sub { } } } - if (my $maxlen = $self->column->max_length) { + if (defined $self->column->max_length) { + my $maxlen = $self->column->max_length; foreach my $val (@values) { if (defined $val && defined $maxlen && length($val) > $maxlen) diff --git a/t/006_invalid_values.t b/t/006_invalid_values.t index b84caea32..99cede863 100644 --- a/t/006_invalid_values.t +++ b/t/006_invalid_values.t @@ -83,4 +83,9 @@ $string1->max_length(10); try { $record->fields->{$string1->id}->set_value("foobarbazquux") } hide => 'ALL'; ok( $@, "Failed to write string value exceeding max_length" ); +$string1->force_regex(undef); +$string1->max_length(0); +try { $record->fields->{$string1->id}->set_value("a") } hide => 'ALL'; +ok( $@, "Failed to write string value exceeding max_length of 0" ); + done_testing(); diff --git a/views/fields/input.tt b/views/fields/input.tt index 5112e4cb4..ad5a04ca8 100644 --- a/views/fields/input.tt +++ b/views/fields/input.tt @@ -63,7 +63,9 @@ disabled[% END %][% IF is_readonly %] readonly[% END %][% IF is_required %] required - aria-required="true"[% END %][% IF max_length.defined %] + [% # If using $.defined, TT still defines the value even if it's undef instead of expected behaviour + # we use $.size instead, as we still want to allow a max length of 0 if it's set. %] + aria-required="true"[% END %][% IF max_length.size %] data-max="[% max_length %]"[% END %] > diff --git a/views/fields/textarea.tt b/views/fields/textarea.tt index 7acc8363f..ae99f4fa5 100644 --- a/views/fields/textarea.tt +++ b/views/fields/textarea.tt @@ -42,7 +42,9 @@ disabled[% END %][% IF is_readonly %] readonly[% END %][% IF is_required %] required - aria-required="true"[% END %][% IF max_length.defined %] + [% # If using $.defined, TT still defines the value even if it's undef instead of expected behaviour + # we use $.size instead, as we still want to allow a max length of 0 if it's set. %] + aria-required="true"[% END %][% IF max_length.size %] data-max="[% max_length %]"[% END %] >[% INCLUDE fields/sub/filter.tt; %]