You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Duto (JIRA)" <ji...@apache.org> on 2017/11/02 09:01:00 UTC

[jira] [Created] (WICKET-6489) Exception when "identifier|code" javascript not start on PrependJavaScript

Duto created WICKET-6489:
----------------------------

             Summary: Exception when "identifier|code" javascript not start on PrependJavaScript
                 Key: WICKET-6489
                 URL: https://issues.apache.org/jira/browse/WICKET-6489
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 7.9.0
         Environment: Windows 7 x64
            Reporter: Duto


I use the functionnality of prependJavaScript to replace a composant with animation, but I have I a problem when I have two functions (on difference composants), one with normal syntax like this :

{code:java}
target.prependJavaScript("$('" + c.getMarkupId() + "').selectpicker('destroy')");
{code}

and I other one with special syntax for animation :

{code:java}
target.prependJavaScript(String.format("notify|var c=$('#%s.collapse');if(c.length){c.on('hidden.bs.collapse',function(){notify();});c.collapse('hide');}else{notify();}", c.getMarkupId()));
{code}

I get a error when wicket evaluate the javascript :


{code:java}
ERROR: Wicket.Ajax.Call.processEvaluation: Exception evaluating javascript: SyntaxError: expected expression, got keyword 'var', text: (function(){$('#var1').selectpicker('destroy');})();(function(){notify|var c=$('#var2.collapse');if(c.length){c.on('hidden.bs.collapse',function(){notify();});c.collapse('hide');}else{notify();}})();
{code}

The problem is that the regexp "scriptWithIdentifierR" tests that the javascript is in form of *start with* "identifier|code" or my javascript don't start with "identifier|code" because is :

{code:javascript}
(function(){$('#var1').selectpicker('destroy');})();(function(){notify|var c=$('#var2.collapse');if(c.length){c.on('hidden.bs.collapse',function(){notify();});c.collapse('hide');}else{notify();}})();
{code}

There is 2 functions : the first is a normal function but the second is "identifier|code" function.

If I change the var "scriptWithIdentifierR" (https://tinyurl.com/y8r24b5m) to :

{code:Java}
new RegExp("\\(function\\(\\)\\{([a-zA-Z_]\\w*)\\|((.|\\n)*)?\\}\\)\\(\\);$");
{code}

without the ^ of the first caractere that work nicely.




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)