A sample use case presents such where form validation is only required for record update, not for record creation.

This is possible by adding an empty/dummy section in a form and changing the section's load binder to Bean Shell Load Binder to store this script below. This script will remove form validation if primary key does not exist (which is in add mode).


import org.joget.apps.app.service.AppUtil;
import org.joget.apps.form.service.FormUtil;
import org.joget.apps.form.model.Element;
import org.joget.apps.form.model.Form;
import org.joget.apps.form.model.FormData;
import org.joget.apps.form.model.FormRowSet;

public FormRowSet load(Element element, String primaryKey, FormData formData) {
    if (primaryKey == null) {
        Form form = FormUtil.findRootForm(element);
        removeValidator(form, formData);
    }
    return null;
}

public void removeValidator(Element e, FormData formData) {
    e.setValidator(null);
    
    Collection children = e.getChildren(formData);
    if (children != null) {
        for (Element child : children) {
            removeValidator(child, formData);
        }
    }
}

//call load method with injected variable
return load(element, primaryKey, formData);


Sample app is available in the link below:

APP_removeValidation-1-20180502092022.jwa


Credits to: panda




  • No labels