You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Werner Masik <we...@gefi.at> on 2005/07/06 10:33:36 UTC

switch/case fails when if/then works

Hello!

I have a strange flowscript problem with a switch/case.  The code is a 
function that should display a list of persons (using a repeater). Every 
row of the repeater contains a submit button for editing and deleting. 
When a button is pressed the form gets submitted and the next action is 
decided by a If/then or a Switch/case that compares the ID of the 
submit-widget.  The strange behaviour is that when I press the edit 
button (with submit-ID=editPerson) the switch/case compare does not seem 
to work. The If/then works. Is it possible that switch/case only works 
with integer? Or maybe it is just a stupid mistake I don't see now. But 
the code is based on http://www.planetcocoon.com/node/1715#comment
So I think it should work. If anybody has an idea, please let me know.

Thanks, werner

Here is my code:

function personenEditor() {
   
    var form = new Form("forms/personenlisteDef.xml");
    form.createBinding("forms/personenlisteBinding.xml");   
    var personDAO = new Packages.com.gefi.ees.persistence.PersonDAO();   
    form.load(personDAO);   
   
    var redisplayForm = true;
    while(redisplayForm) {
       
        form.showForm("formPage/personenlisteTemplate");
        var submitWidget = form.getWidget().getSubmitWidget();
        // Can be null on "normal" submit
        var submitId = submitWidget == null ? null : submitWidget.getId();
        java.lang.System.out.print("SubmitWidgetID=" + submitId);
        var person_id = 
submitWidget.getParent().getChild('person_id').getValue();
        java.lang.System.out.println("; person_id=" + person_id);
       
        if (submitId=="editPerson") {
            // this works
            java.lang.System.out.println("if editPerson");           
        }
        switch(submitId) {
            case "editPerson":
                // does not work
                java.lang.System.out.println("switch editPerson");    
       
                showEditForm();
                break;
            case "createPerson":
                   showCreateForm();
                break;
            case "deletePerson":
                showDeleteForm();
                break;           
        }
    }
}

Re: switch/case fails when if/then works

Posted by Werner Masik <we...@gefi.at>.
Ben Pope wrote:

> Werner Masik wrote:
>
>> Hello!
>>
>> I have a strange flowscript problem with a switch/case.  The code is 
>> a function that should display a list of persons (using a repeater). 
>> Every row of the repeater contains a submit button for editing and 
>> deleting. When a button is pressed the form gets submitted and the 
>> next action is decided by a If/then or a Switch/case that compares 
>> the ID of the submit-widget.  The strange behaviour is that when I 
>> press the edit button (with submit-ID=editPerson) the switch/case 
>> compare does not seem to work. The If/then works. Is it possible that 
>> switch/case only works with integer? Or maybe it is just a stupid 
>> mistake I don't see now. But the code is based on 
>> http://www.planetcocoon.com/node/1715#comment
>> So I think it should work. If anybody has an idea, please let me know.
>
>
> I recall reading something about switching on strings... have a look 
> here:
>
> http://marc.theaimsgroup.com/?l=xml-cocoon-dev&m=111056231409589&w=2
>
> and here:
> http://marc.theaimsgroup.com/?l=xml-cocoon-users&m=110865972811342&w=2
>
This link says it all. Looks like the switch statement only works in 2.2 
as expected. I had a lot of headache because of this problem. Thank's 
for finding out the links.

Werner

> Ben
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>


Re: switch/case fails when if/then works

Posted by Ben Pope <be...@gmail.com>.
Werner Masik wrote:
> Hello!
> 
> I have a strange flowscript problem with a switch/case.  The code is a 
> function that should display a list of persons (using a repeater). Every 
> row of the repeater contains a submit button for editing and deleting. 
> When a button is pressed the form gets submitted and the next action is 
> decided by a If/then or a Switch/case that compares the ID of the 
> submit-widget.  The strange behaviour is that when I press the edit 
> button (with submit-ID=editPerson) the switch/case compare does not seem 
> to work. The If/then works. Is it possible that switch/case only works 
> with integer? Or maybe it is just a stupid mistake I don't see now. But 
> the code is based on http://www.planetcocoon.com/node/1715#comment
> So I think it should work. If anybody has an idea, please let me know.

I recall reading something about switching on strings... have a look here:

http://marc.theaimsgroup.com/?l=xml-cocoon-dev&m=111056231409589&w=2

and here:
http://marc.theaimsgroup.com/?l=xml-cocoon-users&m=110865972811342&w=2

Ben

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org