I ran into an interesting problem today in v3.1 that I thought I might share with the community.

I had previously built a Form that used a Bean Shell Form Binder to load data into the form fields. My requirements changed so I needed to remove the Form Binder binding. When I did that, the UI seemed to indicate that everything had been changed correctly, but when I went to run my process, I found that the form fields were still loading the data as if the Bean Shell Form Binder was still bound. I tried changing it to a Workflow Form binder, but it didn't change the behavior. I also tried changing the source within the Bean Shell and that didn't work either.

It turns out that JSON Definition that the form is built off of wasn't getting updated when I changed the Form Binder. Under the 'ADVANCED: JSON Definition' at the bottom of the Form editor, I had to manually remove the BeanshellFormBinder class and script property from the JSON itself. When I did that, things started working properly. This might be a bug in the Joget Core software.

Example:

From:

 "className":"org.joget.apps.form.model.Section",

         "properties":{

            "id":"reviewPhoneSection",

            "loadBinder":{

               "className":"org.joget.apps.form.lib.BeanShellFormBinder",

               "properties":{

                  "script":"import org.joget.apps.app.service.*;\nimport org.joget.apps.form.model.*;\nimport org.joget.apps.form.service.*;\nimport java.util.*;\n\nSystem.out.println(\"looking at results\");\npublic FormRowSet getData() {\n\n    FormRowSet results = null;\n\n    if (results == null) {\n        results = new FormRowSet();\n    \n\tFormRow row = new FormRow();\n        row.put(\"carrier\", \"ATT\");\n\trow.put(\"groupName\", \"1234\");\n\tresults.add(row);\n    }\n\n    return results;\n}\n\nreturn getData();"

               }

            },

            "visibilityControl":"",

            "regex":"",

            "visibilityValue":"",

            "storeBinder":{

               "className":"",

               "properties":{



               }

            },

            "label":"Review Phone",

            "permission":{

               "className":"",

               "properties":{



               }

            },

            "elementUniqueKey":"132399"

         }

To

 "className":"org.joget.apps.form.model.Section",

         "properties":{

            "id":"reviewPhoneSection",

            "loadBinder":{

               "className":"",

               "properties":{

               }

            },

            "visibilityControl":"",

            "regex":"",

            "visibilityValue":"",

            "storeBinder":{

               "className":"",

               "properties":{



               }

            },

            "label":"Review Phone",

            "permission":{

               "className":"",

               "properties":{



               }

            },

            "elementUniqueKey":"132399"

         }
  • No labels

2 Comments

  1. Hi Pete,

    Thanks for your input. I tried to replicate this problem but failed to. Did you happen to forget to hit on the "OK" button after the change? Anyhow, I will take note on this.

    Cheers

    1. I definitely clicked the OK button to save my changes. Unfortunately, I didn't write down my steps for producing the problem. If I run into it again, I'll let you know.