Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

regex bug in dialog with a single textfield, AEM 5.6.1

Avatar

Level 2

Hi,

I've just found this bug in my AEM 5.6.1 instance: if a dialog tab has only 1 field and this field is a textfield with a regex property then the author will get the error 'this.regex.test is not a function'. Is this a known bug? if so, what is the recommendation to workaround it?

Bellow I'll put some of the investigation I've done, in case it might help:

I think the culprit is this piece of code (inside function FormatData in file /libs/cq/ui/widgets/source/utils/Util.js):

                            if (i == "items" && array.length == 1) {
                                // set single items directly as object
                                data[i] = array[0];
                            }
                            else {
                                data[i] = array;
                            }

other parts of the system expect data[i] to be an array, even it has only one element. For an example, the function 'CQ.Util.applyDefaults' has this piece of code:

                if (value && typeof value == "object" &&
                        !(value instanceof Array) && !isCqInstance(value)) {

                    base[name] = CQ.utils.Util.applyDefaults(base[name], value);
                }

as can be seen, the conditional will be evaluated to true and CQ.utils.Util.applyDefaults will be wrongly called. This call will in turn change the value of regex from a RegExp instance to an Object instance.

1 Accepted Solution

Avatar

Correct answer by
Level 10

Hi,

I was able to replicate this, can you please raise a day care ticket for the same.

View solution in original post

6 Replies

Avatar

Level 10

I am going to see if i can reproduce these results. I will post back the findings. 

Avatar

Level 2

smacdonald2008 wrote...

I am going to see if i can reproduce these results. I will post back the findings. 

 


thanks! Some more data:

1. if the dialog has more than one tab, the error doesn't happen

2. if the dialog has a sibling cq:editConfig node, the error doesn't happen

here is a definition of a dialog that triggers the error:

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
    jcr:primaryType="cq:Dialog" xtype="dialog">
    <items jcr:primaryType="cq:Widget" activeTab="{Long}0" xtype="tabpanel">
        <items jcr:primaryType="cq:WidgetCollection">
            <tab jcr:primaryType="cq:Widget"
                xtype="panel"
                title="test">
                <items jcr:primaryType="cq:WidgetCollection">
                    <test
                       jcr:primaryType="cq:Widget"
                       allowBlank="{Boolean}false"
                       regex="/[a-zA-Z0-9]+/"
                       fieldLabel="Test"
                       name="./test"
                       xtype="textfield" />
                </items>
            </tab>
        </items>
    </items>
</jcr:root>

if you add a new field called 'hack' of type hidden, the error disappears.

Avatar

Correct answer by
Level 10

Hi,

I was able to replicate this, can you please raise a day care ticket for the same.

Avatar

Former Community Member

Hi,

 

I'm having the same issue. Is there a hot-fix available?

Avatar

Level 2

Hi @bru

brunovianarezende wrote...

smacdonald2008 wrote...

I am going to see if i can reproduce these results. I will post back the findings. 

 


thanks! Some more data:

1. if the dialog has more than one tab, the error doesn't happen

2. if the dialog has a sibling cq:editConfig node, the error doesn't happen

here is a definition of a dialog that triggers the error:

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
    jcr:primaryType="cq:Dialog" xtype="dialog">
    <items jcr:primaryType="cq:Widget" activeTab="{Long}0" xtype="tabpanel">
        <items jcr:primaryType="cq:WidgetCollection">
            <tab jcr:primaryType="cq:Widget"
                xtype="panel"
                title="test">
                <items jcr:primaryType="cq:WidgetCollection">
                    <test
                       jcr:primaryType="cq:Widget"
                       allowBlank="{Boolean}false"
                       regex="/[a-zA-Z0-9]+/"
                       fieldLabel="Test"
                       name="./test"
                       xtype="textfield" />
                </items>
            </tab>
        </items>
    </items>
</jcr:root>

if you add a new field called 'hack' of type hidden, the error disappears.

 

How did you fix this issue? Can you please share the solution?