@@ -72,9 +72,23 @@ class ViewModelWidgetRenderer implements ModelWidgetRenderer {
72
72
context. writer << " <span ${ context.attributes.toString()} data-bind='${ context.databindAttrs.toString()} '></span>"
73
73
}
74
74
75
+ /**
76
+ * The binding looks for the toReadOnlyString function because there exist some misconfigurations that
77
+ * use a "text" data model item with a selectMany/select2Many view. This is a workaround to prevent exceptions.
78
+ */
79
+ private static String selectManyBindingString (WidgetRenderContext context ) {
80
+ ' _.isFunction((' + context. source+ ' || []).toReadOnlyString) ? ' + context. source+ ' .toReadOnlyString() : (' + context. source+ ' () || []).join(", ")'
81
+ }
82
+
75
83
@Override
76
84
void renderSelectMany (WidgetRenderContext context ) {
77
- context. databindAttrs. add ' text' , ' (' + context. source+ ' () || []).join(", ")'
85
+ context. databindAttrs. add ' text' ,selectManyBindingString(context)
86
+ context. writer << " <span ${ context.attributes.toString()} data-bind='${ context.databindAttrs.toString()} '></span>"
87
+ }
88
+
89
+ @Override
90
+ void renderSelect2Many (WidgetRenderContext context ) {
91
+ context. databindAttrs. add ' text' , selectManyBindingString(context)
78
92
context. writer << " <span ${ context.attributes.toString()} data-bind='${ context.databindAttrs.toString()} '></span>"
79
93
}
80
94
@@ -195,12 +209,6 @@ class ViewModelWidgetRenderer implements ModelWidgetRenderer {
195
209
context. writer << """ \$ <span data-bind='${ context.databindAttrs.toString()} '></span>.00"""
196
210
}
197
211
198
- @Override
199
- void renderSelect2Many (WidgetRenderContext context ) {
200
- context. databindAttrs. add ' text' , ' (' + context. source+ ' () || []).join(", ")'
201
- context. writer << " <span ${ context.attributes.toString()} data-bind='${ context.databindAttrs.toString()} '></span>"
202
- }
203
-
204
212
@Override
205
213
void renderMultiInput (WidgetRenderContext context ) {
206
214
context. databindAttrs. add ' text' , ' (' + context. source+ ' () || []).join(", ")'
0 commit comments