Hi Jeff,

I did a similar setup in  a Cocoon2.2 block and the same problem occurs:

function testSwitch() {
        var cmd = cocoon.request.getParameter("cmd");
        
        print("cmd=" + cmd);
        print(cmd.getClass().getName());
        
        switch(cmd) {
            case "save": 
                    print("request parameter was save");
                    break;
            case "delete": 
                    print("request parameter was delete");
                    break;
                default:
                    print("request parameter was none of the above");
                    break;                      
        }
}


Output in console:
cmd=delete
java.lang.String
request parameter was none of the above

By the way... cmd.getClass().getName() is only possible if the object is in 
fact a java object.  They use LiveConnect so you can easily use Java and 
JavaScript together.  I suspect that the switch does not work properly on 
java.lang.String.

So when you convert the cmd to a native javascript object it suddenly will work 
again.  A better solution is demonstrated below:



function testSwitch() {
        var cmd = getCmd("cmd");
        switch(cmd) {
            case "save": 
                    print("request parameter was save");
                    break;
            case "delete": 
                    print("request parameter was delete");
                    break;
                default:
                    print("request parameter was none of the above");
                    break;                      
        }
}


function getCmd(name) {
        return "" + cocoon.request.getParameter(name);  // --> we need to make 
sure we get a native javascript object so our switch will work
}

Kind regards,
Robby

-----Original Message-----
From: Schmitz, Jeffrey A [mailto:[email protected]] 
Sent: Monday, February 08, 2010 6:59 PM
To: [email protected]
Subject: RE: Can't use switch with cocoon.request.get in flowscript

In effect, I already do that with the following code which is my workaround.  
In this case the switch DOES work.

     var cmd = cocoon.request.get("Cmd");

     //For some reason, the switch doesn't work with the
     //string returned from cocoon.request.get, but if
     //statements do.
     if (cmd == "Open") {
        cmd = "Open";
     }
     if (cmd == "Create Model") {
        cmd = "Create Model";
     }     
     if (cmd == "Account") {
         cmd = "Account";
      } 
     if (cmd == "Logout") {
        cmd = "Logout";
     } 
     
     switch (cmd) {

        case "Open":

Jeff
Work: 314-232-1997
Cell: 636-448-5990
 

> -----Original Message-----
> From: Robby Pelssers [mailto:[email protected]] 
> Sent: Monday, February 08, 2010 11:56 AM
> To: [email protected]
> Subject: RE: Can't use switch with cocoon.request.get in flowscript
> 
> A next step would be to try something like 
> 
>      var cmd = "Open";
>      print("cmd='" + cmd = "'");
> 
>      switch (cmd) {
>         case "Open": 
>             {
>                 print("Command is Open");
>                 break;
>             }
>         case "Create Model": 
>             {
>                 print("Command is Create Model");
>                 break;   
>             }
>        case default:
>             {
>                 print("Command did not match any of the above");
>                 break;   
>             }
>      }
> 
> If this snippet still does print the default output you know 
> for sure the switch is not behaving properly. 
> 
> https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference
> /Statements/switch
> 
> So can you first see what the output of the snippet above is?
> 
> Cheers,
> Robby
> 
> 
> 
> -----Original Message-----
> From: Schmitz, Jeffrey A [mailto:[email protected]]
> Sent: Monday, February 08, 2010 5:45 PM
> To: [email protected]
> Subject: RE: Can't use switch with cocoon.request.get in flowscript
> 
> Here's the output.  Very strange.  Again, 'if' check's work 
> on it, but the switch command doesn't unless I do the workaround.
> 
>  cmd='Open'
>  Command did not match any of the above
> 
> Jeff
> Work: 314-232-1997
> Cell: 636-448-5990
>  
> 
> > -----Original Message-----
> > From: Robby Pelssers [mailto:[email protected]]
> > Sent: Monday, February 08, 2010 10:27 AM
> > To: [email protected]
> > Subject: RE: Can't use switch with cocoon.request.get in flowscript
> > 
> > Well,
> > 
> > I know for sure the switch works fine in cocoon2.2.  Might not be 
> > implemented properly in an older version of Rhino?
> > 
> > Anyway...
> > 
> > What happens if you use this snippet??  It should at least print 
> > something to your console.
> > 
> >      var cmd = cocoon.request.get("Cmd");
> >      print("cmd='" + cmd = "'");
> > 
> >      switch (cmd) {
> >         case "Open": 
> >             {
> >                 print("Command is Open");
> >                 break;
> >             }
> >         case "Create Model": 
> >             {
> >                 print("Command is Create Model");
> >                 break;   
> >             }
> >        ...
> >        Case default:
> >             {
> >                 print("Command did not match any of the above");
> >                 break;   
> >             }
> >      }
> > 
> > Kind regards,
> > Robby Pelssers
> >     
> > 
> > 
> > -----Original Message-----
> > From: Schmitz, Jeffrey A [mailto:[email protected]]
> > Sent: Monday, February 08, 2010 4:55 PM
> > To: [email protected]
> > Subject: Can't use switch with cocoon.request.get in flowscript
> > 
> > Hello,
> >    In Cocoonn 2.1, does anyone know why I can't use a 
> switch command 
> > with the result of cocoon.request.get in flowscript?
> > if's work just fine, but switch doesn't.  E.g. to get the switch to 
> > work I have to do the following:
> > 
> >      var cmd = cocoon.request.get("Cmd");
> > 
> >      //For some reason, the switch doesn't work with the
> >      //string returned from cocoon.request.get, but if
> >      //statements do.
> >      if (cmd == "Open") {
> >         cmd = "Open";
> >      }
> >      if (cmd == "Create Model") {
> >         cmd = "Create Model";
> >      }
> >      if (cmd == "Account") {
> >          cmd = "Account";
> >       }
> >      if (cmd == "Logout") {
> >         cmd = "Logout";
> >      }
> > 
> >      switch (cmd) {
> > 
> >         case "Open":
> >                   ...
> > 
> > I have tried adding .toString() to the end of the get function and 
> > also the cmd variable in various places, but that doesn't 
> work either.
> > 
> > Thanks!
> > Jeff
> > 
> > 
> > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> > 
> > 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 
> 
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to